OpenCV灰度图与其变变换

OpenCV灰度图与其变变换

参考
https://blog.csdn.net/dddxxxx/article/details/51941990
https://www.zhihu.com/question/21593044

前言

实际中发现:
IMREAD_GRAYSCALECOLOR_BGRA2RGBA所得灰度图是不同的。
imread(xx.jpg,0)imread(xx.jpg,IMREAD_GRAYSCALE)
cvtColor(src, gray, COLOR_BGR2GRAY);得到不一样的灰度图。

解释

  • 先看cvtColor官方文档的说明:
    这里写图片描述
    可以看到RGB通道变换到灰度影像时个通道的权重不同。
    为什么变换公式是非等权的呢。
    在网上找了些资料,个人比较信服的解释是:
    人眼对绿色的敏感度最高,对红色的敏感度次之,对蓝色的敏感度最低,因此使用不同的权重将得到比较合理的灰度图像。实验和理论推导得出 0.299、 0.587、 0.114。

  • 再看imread的官方文档说明:
    In the case of color images, the decoded images will have the channels stored in B G R order.可以看出彩色影像存入mat中是按照BGR的顺序存储的。
    但进行imread(xx.jpg,IMREAD_GRAYSCALE)要求读入灰度影像时,BGR三个通道获得灰度的方式就不知道了(没有追源码)但它确实与cvtColor变换的公式不同,可能各通道是等权处理的把。

猜你喜欢

转载自blog.csdn.net/fb_help/article/details/80055151