我遇到了这个问题。我有一个3通道图像(cv_32fc3),我想把它提取到单通道。我使用下面的代码来打印特定像素的值,但我得到了不同的结果。 使用
正确打印第一个cout语句-0.178382 0 0
然而,第二个cout语句打印
-4.31602e+008 -4.31602e+008 -4.31602e+008
以下是代码:
Vec3f pix = img_origin.at<float>(1464,487);
cout<<pix[0]<<"\t"<<pix[1]<<"\t"<<pix[2]<<"\n";
Mat channels[3];
split(img_origin, channels);
cout<<channels[0].at<float>(1465,488)<<"\t"<<channels[1].at<float>(1464,487)<<"\t" <<channels[2].at<float>(1464,487)<<"\n";
我已经搜索并阅读了许多示例并尝试了很多案例,但是现在我迷失了。请帮助,任何建议表示赞赏。
我认为Bug in OpenCV2.3 cv::split() function. Identical values in all 3 channels与我的问题有关,但事实并非如此。