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

验证程序的源码如下(用到的图像下载链接为http://pan.baidu.com/s/1qXBLxfQ):

//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)代表的是红色

-------------------------------------------
欢迎大家加入图像识别技术交流群:271891601,另外,特别欢迎成都从事图像识别工作的朋友交流,我的QQ号2487872782

你可能感兴趣的:(事实证明,OpenCV中对RGB图像数据的存储顺序是BGR,而且Scalar()的顺序也是B,G,R)