MATLAB/Opencv:将 24 位 RGB 图像转换为 16 位灰色



我们在OpenCV或MATLAB中是否有函数将24位RGB图像转换为16位灰色图像。我尝试了CvConvertColor,但它在这里没有用。

(我可以使用cvtColor(src,bwsrc,CV_RGB2GRAY)转换为灰度,需要更多的帮助,但我想从32位变成16位。

我相信matlab中有rgb2gray运算符。

这是一个链接,你可以从mathworks网站阅读它:

http://www.mathworks.com/help/toolbox/images/ref/rgb2gray.html

这甚至告诉您如何在图像中阅读。 您应该需要的大部分代码都在那里!!

I = imread('board.tif');
J = rgb2gray(I);
figure, imshow(I), figure, imshow(J);

你试过OpenCV的cvtcolor吗?我不确定您使用的是哪个opencv版本,但是CvConvertColor不再存在,您可能应该设置最新版本。

CVT颜色:

http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html#cvtcolor

cvtColor 本身没有进一步的参数,它足够聪明,可以检查源和命运矩阵的位数。Opencv 矩阵对象,垫子对象,具有自定义的 opencv 类型,用于保存其位数、颜色通道数和基元类型(详细信息:http://docs.opencv.org/modules/core/doc/basic_structures.html#datatype)。

如果要确定生成的矩阵是否为 16 位,可以检查 Mat 类型。如果矩阵不在您需要的位数中,opencv 还有其他转换器:http://docs.opencv.org/modules/core/doc/basic_structures.html?highlight=convert#mat-convertto

最新更新