3

許容可能なタイプで使用するMatタイプの場合、割り当てを実行したり、ストリームに書き込んだりしようとすると、次のようなエラーが発生します。MSVC++ 2010 Expressコンパイラでは発生しますが、gnug++コンパイラでは発生しません。

欠陥のある使用例:

Mat M = Mat::zeros( image.size(),  DataType<int>::type  );

std::cout << M.at<int>( 0,0 ) << std::endl; // error

// OR

int x = M.at<int>( 0,0 ); // error

2つのエラーが一緒に発生しました:

ポップアップウィンドウで

Unhandled exception at <some hex adress> in test.exe:Microsoft C++ exception: cv:xception at memory location <some hex adress>

およびコンソールウィンドウ

OpenCV Error: Assertion failed ... \mat.hpp, line 537

助言がありますか?

4

2 に答える 2

7

行列のデータ型を作成しCV_16Uます。

.atアクセサ関数は非常に細心の注意を払っており、非常に正確なデータ型が必要です。一部のコンパイラはこれらの問題を無視しますが、他のコンパイラは早期に問題を検出します。

で要素を参照するのではなくmatrix.at<int>(row, col)、データ型CV_16Uを参照します。unsigned shortしたがって、要素には。でアクセスできますmatrix.at<unsigned short>(row, col)

于 2012-11-24T22:15:33.453 に答える
0

openCVにintデータ型の画像があるとは思いません。
整数型は通常CV_16s、つまり16ビットショートなので、

于 2012-11-25T00:01:48.003 に答える