事实证明,OpenCV中对RGB图像数据的存储顺序是BGR,Scalar()的参数顺序也是B,G,R

图像处理开发需求、图像处理接私活挣零花钱,请加微信/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)代表的是红色
 

猜你喜欢

转载自blog.csdn.net/wenhao_ir/article/details/51554530