偶然间发现使用imread("img",IMREAD_GRAYSCALE)和cvtColor(img,grayimg,CV_RGB2GRAY)得到的图片有差异,IMREAD_GRAYSCALE得到的图像更亮一点。
IMAGE_GRAYSCALE CV_RGB2GRAY查了查opencv帮助文档,在imread函数下有如下注明:
原来opencv默认读取图像按照B G R的顺序进行存储,因此使用IMREAD_GRAYSCALE时,其内建的灰度转换方式是BGR2GRAY。
#BGR2GRAY:转换公式为Gray = 0.1140*B + 0.5870*G + 0.2989*R
#RGB2GRAY:转换公式为Gray = 0.1140*R + 0.5870*G + 0.2989*B
验证一下BGR2GRAY与IMREAD_GRAYSCALE的效果是否相同。
BGR2GRAY IMAGE_GRAYSCALE结果完全一致,其实在MATLAB,IDL等图像处理软件中都是默认按照BGR的顺序来处理的,竟然忘了,Mark。
网友评论