失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【opencv】14.cv::cvtColor函数转换颜色空间时使用CV_RGB2BGR与CV_BGR2RGB结果一样的原因

【opencv】14.cv::cvtColor函数转换颜色空间时使用CV_RGB2BGR与CV_BGR2RGB结果一样的原因

时间:2023-01-13 01:57:16

相关推荐

【opencv】14.cv::cvtColor函数转换颜色空间时使用CV_RGB2BGR与CV_BGR2RGB结果一样的原因

看下面一段代码:

cv::Mat img1 = imread("./lena_bgr.png",1);cv::Mat img2,img3;cv::cvtColor(img1, img2, CV_RGB2BGR);cv::cvtColor(img1, img3, CV_BGR2RGB); cv::imshow("img1", img1);cv::imshow("img2", img2);cv::imshow("img3", img3);cv::waitKey(0);

可以看出,img2img3的图片是一模一样的。因为CV_RGB2BGRCV_BGR2RGB的值都为4,表示交换BR通道的值。定义在/usr/local/include/opencv2/imgproc/types_c.h中,可以看到以下枚举定义:

CV_BGR2RGB=4,CV_RGB2BGR=CV_BGR2RGB,

底层算法确实是一样的,RGBBGR互相转化也就是把RB数据互换位置:

当你输入是RGB格式时,转化后就变成BGR格式;当你输入是BGR格式时,转化后就变成RGB格式;当你对一个图像使用cv::cvtColor()进行连续两次in-placeCV_RGB2BGR操作,就变回原来的颜色空间了。

上面的CV_RGB2BGRCV_BGR2RGB是opencv2.x版本的;

opencv3.0版本的是cv::COLOR_RGB2BGRcv::COLOR_BGR2RGB

他们定义在/usr/local/include/opencv2/imgproc.hpp中的命名空间为cv里面:

COLOR_BGR2RGB= 4,COLOR_RGB2BGR= COLOR_BGR2RGB,

类似的还有:

enum{CV_BGR2BGRA =0,CV_RGB2RGBA =CV_BGR2BGRA,CV_BGRA2BGR =1,CV_RGBA2RGB =CV_BGRA2BGR,CV_BGR2RGBA =2,CV_RGB2BGRA =CV_BGR2RGBA,CV_RGBA2BGR =3,CV_BGRA2RGB =CV_RGBA2BGR,CV_BGR2RGB=4,CV_RGB2BGR=CV_BGR2RGB,CV_BGRA2RGBA =5,CV_RGBA2BGRA =CV_BGRA2RGBA,CV_BGR2GRAY =6,CV_RGB2GRAY =7,CV_GRAY2BGR =8,CV_GRAY2RGB =CV_GRAY2BGR,CV_GRAY2BGRA =9,CV_GRAY2RGBA =CV_GRAY2BGRA,CV_BGRA2GRAY =10,CV_RGBA2GRAY =11,......}

如果觉得《【opencv】14.cv::cvtColor函数转换颜色空间时使用CV_RGB2BGR与CV_BGR2RGB结果一样的原因》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。