OpenCV中CV_RGB2GRAY和CV_BGR2GRAY的区别

原文链接:https://blog.csdn.net/weixin_42142612/article/details/80804039

平时处理图像的时候,很少用到彩色信息,一般都是直接转换为灰度图。转换灰度图用的cvtColor的第三个参数中有两个参数,我一直没太注意区别,CV_RGB2GRAY与CV_BGR2GRAY。今天通过一个简单的测试区分一下。

测试代码如下:

#include <opencv2\opencv.hpp>
 
using namespace std;
using namespace cv;
 
int main()
{
    cv::Mat src = cv::imread("C:\\Users\\dell\\Desktop\\xin1.jpg", 1);
    if (src.empty() || src.channels() != 3)
    {
        cout << "Source image load error!" << endl;
        return -1;
    }
 
    //采用CV_BGR2GRAY,转换公式Gray = 0.1140*B + 0.5870*G + 0.2989*R
    cv::Mat bgr2grayImg;    
    cvtColor(src, bgr2grayImg, CV_BGR2GRAY);    
 
    //采用CV_RGB2GRAY,转换公式Gray = 0.1140*R + 0.5870*G + 0.2989*B
    cv::Mat rgb2grayImg;
    cvtColor(src, rgb2grayImg, CV_RGB2GRAY);    
 
    //采用CV_GRAY2BGR,转换公式B = G = R = Gray
    cv::Mat gray2bgrImg;
    cvtColor(bgr2grayImg, gray2bgrImg, CV_GRAY2BGR);    
 
    //采用CV_GRAY2RGB,转换公式R = G = B = Gray
    cv::Mat gray2rgbImg;
    cvtColor(rgb2grayImg, gray2rgbImg, CV_GRAY2RGB);    
    
    waitKey(0);
    return 0;
}


1.原图是一张彩色图,美美的GAKKI笑的太有感染力了,为了说明计算公式,将她的左眼处放大,用ImageWatch可以看到元素的b、g、r的值,框选的左上角处(B = 157, G = 183, R = 220),右下角处(B = 163, G = 182, R = 203)。

2.利用CV_BGR2GRAY将原图src转换为灰度图bgr2grayImg,计算公式为Gray = 0.1140*B + 0.5870*G + 0.2989*R

左上角:0.1140 * 157 + 0.5870 * 183 + 0.2989 * 220 ≈ 191

右下角:0.1140 * 163 + 0.5870 * 182 + 0.2989 * 203 ≈ 186

3.利用CV_RGB2GRAY将原图src转换为灰度图rgb2gray,转换公式Gray = 0.1140*R + 0.5870*G + 0.2989*B,与CV_BGR2GRAY相比,转换的系数一致,不同的是系数后紧跟的通道的顺序变化了,由BGB变为RGB。

左上角:0.1140 * 220 + 0.5870 * 183 + 0.2989 * 157 ≈ 179

右下角:0.1140 * 203 + 0.5870 * 182 + 0.2989 * 163 ≈ 179

4.利用CV_GRAY2BGR将bgr2grayImg转换为gray2bgrImg,转换公式B = G = R = Gray

4.利用CV_GRAY2RGB将rgb2grayImg转换为gray2rgbImg,转换公式R = G = B = Gray


综上:两种方式的转换公式都是一样的,只是转换之后的通道顺序改变了。

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值