在OpenCV中访问复杂Mat的元素
问题描述:
我需要访问包含std::complex<double>
的cv::Mat
的实数部分特定元素。在OpenCV中访问复杂Mat的元素
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()
答
的Mat
充满型std::complex<double>
但你请求一个double
当你写B.at<double>(0, 0)
;返回类型是double
,它没有.real()
方法。相反,你需要返回复杂的类型,你的Mat
认为:
cout << "B(0,0) = " << B.at<std::complex<double> >(0, 0).real();
B(0,0)= 0
如果你想设置一个虚数,你需要实际上传递到基体中,否则它只是设置实数部分:
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)
哇亚历山大,这正是我一直在寻找。谢谢你,朋友! – Josh