图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601
验证这个事实的源码如下:
我们读入的图片是一张纯红色的图片,即图像的三通道中,R通道的数值不为0,G通道和B通道的数值都为0。
//OpenCV版本2.4.9
//交流QQ2487872782
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#pragma comment(linker,"/subsystem:windows /ENTRY:mainCRTStartup")
int main()
{
// 源图像载入及判断
cv::Mat srcImage = cv::imread ("Red_pic.jpg"); //Red_pic是一幅全红的图
if( !srcImage.data )
return 1;
cv::Mat tempImage = srcImage.clone();
int watch1,watch2,watch3;
watch1 = tempImage.at<cv::Vec3b>(0, 0)[0];
watch2 = tempImage.at<cv::Vec3b>(0, 0)[1];
watch3 = tempImage.at<cv::Vec3b>(0, 0)[2];
return 0;
}
运行结果如下图所示:
从图中我们可以看出第三个分量的值是254,这就说明第三个分量是R,所以OpenCV对RGB图像数据的存储顺序是BGR。
另外,通过其它程序,我也试验出了Scalar()的三个参数的顺序是B、G、R,所以cv::Scalar( 0, 0, 255)代表的是红色