这个问题在这里已经有了答案:
10年前关闭。
Possible Duplicate:
OpenCV rgb value for cv::Point in cv::Mat
如您所知,在 matlab 中使用
r = image(:,:,1)
很容易获得 r/g/b 值。 .但是在openCV(2.2之前)我们必须使用这样的指针:
plImage* img=cvCreateImage(cvSize(640,480),IPL_DEPTH_32F,3);
((float *)(img->imageData + i*img->widthStep))[j*img->nChannels + 0]=111; // B
((float *)(img->imageData + i*img->widthStep))[j*img->nChannels + 1]=112; // G
((float *)(img->imageData + i*img->widthStep))[j*img->nChannels + 2]=113; // R
但是随着openCV2.3的出现,很容易得到单 channel 图像的像素值,如下所示:
Mat image;
int pixel = image.at<uchar>(row,col);
所以我只是想知道还有一种简单的方法来获取多 channel 图像的 r,g,b 像素值,就像在 Matlab 中那样?任何帮助将不胜感激 =)
最佳答案
对于 C++ 接口(interface),您可以执行以下操作:
Vec3f pixel = image.at<Vec3f>(row, col);
int b = pixel[0];
int g = pixel[1];
int r = pixel[2];
关于opencv - 如何使用 opencv2.3 获取 r,g,b 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258628/