我们是否在OpenCV或MATLAB中具有将24位RGB图像转换为16位灰度图像的功能。我试过CvConvertColor,但这里没用。
(我可以使用cvtColor(src,bwsrc,CV_RGB2GRAY)转换为灰度,需要更多帮助,但我想从32位将其设为16位。)
答案 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