私はこの議論について多くのポストを認識していますが、それらの多くは読んだことがありますが、まだ混乱しています。問題はタイプです(オハイオ、ええ、これはCです、私はデータ型を扱わなければなりません!-))。私は新しい過テンプレートのC++ API関数at
使用していcv :: Matのcv :: Matの要素(x、y)にC++ APIを使用して
:
Mat mat32f(3, 3, CV_32F);
for(int i=0; i<3; i++)
for(int j=0; j<3; j++)
mat32f.at<float>(i,j) = i;
cout << "Matrix of type: " << mat32f.type() << endl;
cout << mat32f << endl;
cout << mat32f.at<float>(1,2) << endl;
[OK]を、ここでは1つのチャンネル、問題はないとのフロートしている、出力は明確である:
Matrix of type: 5
[0, 0, 0;
1, 1, 1;
2, 2, 2]
1
今だけ作りますいくつかのフィルタ:
Mat mask;
inRange(mat32f, 1, 1, mask);
cout << "Mask of type: " << mask.type() << endl;
cout << mask << endl;
ここでは、出力は私が欲しいものです:
Mask of type: 0
[0, 0, 0;
255, 255, 255;
0, 0, 0]
今、私はある点(マウスをクリックするかどうかチェックしたいですか?何でも)が範囲内にある。
int value2 = mask.at<char>(1,2);
cout << value2 << endl;
unsigned int value3 = mask.at<unsigned int>(1,2);
cout << value3 << endl;
iはchar
が(理由は私のマスクタイプの0 == CV_8U
です)unsigned int
の同じサイズである最初のコンピュータサイエンスのクラスから覚えているので、文字を使用します。 cout
それはチャーのためにそれをつかむので、役に立たない非アスキーシンボルを表示するので、それをint
に格納してください。ここ
ouputを:何が起こったのか
-1
256
?大きな混乱。なぜ-1?または、なぜか、256?何が起こった?
charは実際にはunsigned intと同じサイズではありません。 – juanchopanza