C++ OpenCV分割通道功能可能工作不正常

C++ OpenCV分割通道功能可能工作不正常,c++,image,opencv,image-processing,C++,Image,Opencv,Image Processing,我被这个问题困住了。我有一个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"<&

我被这个问题困住了。我有一个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";
Vec3f pix=img_原点(1464487);

coutVec3f pix=img_原点在(1464487);//等等,那没有任何意义。(img_origin.at(1464487);will)再次坚持Mat的Mat类型。at()您的意思是我需要将通道[0]投射到Mat?怎么用?关于Vec3f,我用的对吗?它给出了pix[0]的正确值。但若我使用Vec3f,我必须进行迭代,并将每个值传递给另一个处理。我想使用split函数,但它返回的所有值为-4.31602+008。不,您的第一个
Vec3f pix=img_origin.at(1464487)错误。感谢您通知我有关引用的信息。我只是想告诉你,在我问之前,我已经搜索了相关的问题。