【opencv】14.cv::cvtColor函数转换颜色空间时使用CV_RGB2BGR与CV_BGR2RGB结果一样的原因
生活随笔
收集整理的这篇文章主要介绍了
【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);可以看出,img2和img3的图片是一模一样的。因为CV_RGB2BGR与CV_BGR2RGB的值都为4,表示交换B和R通道的值。定义在/usr/local/include/opencv2/imgproc/types_c.h中,可以看到以下枚举定义:
CV_BGR2RGB =4, CV_RGB2BGR =CV_BGR2RGB,底层算法确实是一样的,RGB和BGR互相转化也就是把R和B数据互换位置:
- 当你输入是RGB格式时,转化后就变成BGR格式;
- 当你输入是BGR格式时,转化后就变成RGB格式;
- 当你对一个图像使用cv::cvtColor()进行连续两次in-place的CV_RGB2BGR操作,就变回原来的颜色空间了。
上面的CV_RGB2BGR和CV_BGR2RGB是opencv2.x版本的;
opencv3.0版本的是 cv::COLOR_RGB2BGR和cv::COLOR_BGR2RGB 。
他们定义在/usr/local/include/opencv2/imgproc.hpp中的命名空间为cv里面:
类似的还有:
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结果一样的原因的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【自动驾驶】31.【相机外参标定】、【相
- 下一篇: 【数学和算法】SVD奇异值分解原理、以及