2017-08-25 6 views
0

std::complex<double>が含まれているcv::Matの実数部固有の要素にアクセスする必要があります。OpenCVの複合マットの要素へのアクセス

OpenCVは複合語の作成方法のコードを提供していますcv::Mat_here(キーワード "complex"のページを検索し、その単語の最初の言及はその例です)。ここで

は私の試みです:

Mat B = Mat_<std::complex<double> >(3, 3); 
cout << B.depth() << ", " << B.channels() << endl; 
B.at<double>(0, 0) = 0; 
cout << "B(0,0) = " << B.at<double>(0, 0).real(); // Error due to .rea() 

答えて

1

Matはタイプstd::complex<double>で満たされていますが、B.at<double>(0, 0)を書くとき、あなたがdoubleを要求しています。戻り値の型はdoubleであり、.real()メソッドはありません。

cout << "B(0,0) = " << B.at<std::complex<double> >(0, 0).real(); 

B(0,0)= 0

をあなたは虚数を設定したい場合は、あなたがする必要があります:代わりにあなたのMatが保有する複合型を返す必要があります実際にマトリックスにそれを渡し、それ以外の場合はちょうど実部を設定:

B.at<double>(0, 0) = 2; 
cout << "B(0,0) = " << B.at<std::complex<double> >(0, 0); 

B(0,0)=(2,0)

B.at<std::complex<double> >(0, 0) = std::complex<double> (2, 1); 
cout << "B(0,0) = " << B.at<std::complex<double> >(0, 0); 

B(0,0)=(2,1)

+0

うわーアレキサンダーは、それは私が探していたまさにです。ありがとう、友よ! – Josh

関連する問題