我有一个使用OpenCV的Java程序。我有一个用0到1的数字填充的Mat,我想通过将Mat中的每个值乘以255来将其转换为灰度图像。
我该怎么做呢?
发布于 2015-03-07 00:02:44
我不熟悉java OpenCV API (我主要使用c++),但我会插话,因为还没有人回答。看起来convertTo(Mat m, int rtype, double alpha)会做这项工作。在您的例子中,如下所示
yourMat.convertTo(output, CV_8UC1, 255);应该行得通。
发布于 2015-03-07 00:38:27
另一种选择,而不是你的方法是读取图像的灰度。使用标志CV_LOAD_IMAGE_GRAYSCALE
http://docs.opencv.org/java/org/opencv/highgui/Highgui.html#imread%28java.lang.String,%20int%29
或者如果你想保持你的方法。然后你可以使用矩阵乘法。已经有了一个线程,它就是Matrix multiplication in OpenCV
发布于 2015-03-07 03:15:49
我使用的不是Java,而是C++,但我认为它应该非常相似。在C++中,它将是:
A *= 255;由于比较操作使用0和255创建矩阵,因此您有另一个选择:
A = (A>0);https://stackoverflow.com/questions/28901366
复制相似问题