我使用OpenCV获得了一个Java程序。我有一个填充了从0到1的数字的Mat。我想通过将Mat中的每个值乘以255将其转换为灰度图像。
我该怎么做?
答案 0 :(得分:0)
我不熟悉java OpenCV API(我主要使用c ++工作),但是因为没有人回答,我会填写。看起来convertTo(Mat m, int rtype, double alpha)
可以完成这项工作。在你的情况下,像
yourMat.convertTo(output, CV_8UC1, 255);
应该有用。
答案 1 :(得分:0)
另一种选择,而不是您的方法是将图像读取为灰度。使用标记CV_LOAD_IMAGE_GRAYSCALE
http://docs.opencv.org/java/org/opencv/highgui/Highgui.html#imread%28java.lang.String,%20int%29
或者,如果你想保持你的方法。然后你可以使用矩阵乘法。已经有了一个线程,就是这样 Matrix multiplication in OpenCV
答案 2 :(得分:0)
我不使用Java而是使用C ++,但我认为它应该非常相似。在C ++中它将是:
A *= 255;
由于比较操作创建了0和255的矩阵,因此您有另一个选项:
A = (A>0);
答案 3 :(得分:0)
You can use Java's OpenCv Core library:
公共静态无效乘法(Mat src1,Scalar src2,Mat dst)
示例:
async def say(ctx, *args):