如何使用获得的R,G,B值opencv2.3
问题描述:
可能重复:
OpenCV rgb value for cv::Point in cv::Mat如何使用获得的R,G,B值opencv2.3
如你所知,在MATLAB很容易得到R/G/B值使用r = image(:,:,1)
。
但在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出来,很容易得到这样一个通道图像的像素值:
Mat image;
int pixel = image.at<uchar>(row,col);
所以我只是想知道它还有一个简单的方法来得到多通道图像的r,g,b像素值就像在Matlab中一样吗?任何帮助将不胜感激=)
答
对于C++接口,你可以这样做:
Vec3f pixel = image.at<Vec3f>(row, col);
int b = pixel[0];
int g = pixel[1];
int r = pixel[2];
这是我回答这个同一个问题一阵子回来:http://stackoverflow.com/questions/7899108/opencv-get-pixel- information-from-mat-image/7903042#7903042 – mevatron