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

时间:2012-06-08 09:10:23

标签: matlab image-processing opencv

我们是否在OpenCV或MATLAB中具有将24位RGB图像转换为16位灰度图像的功能。我试过CvConvertColor,但这里没用。

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

2 个答案:

答案 0 :(得分:1)

我相信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);

答案 1 :(得分:0)

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

cvtcolor:

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

cvtColor本身没有其他参数,它足够聪明,可以检查源和命运矩阵的位数。 Opencv矩阵对象,Mat对象,有一个自定义的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