OpenCV:如何将Mat的每个值乘以指定的常量?

时间:2015-03-06 14:53:24

标签: java opencv

我使用OpenCV获得了一个Java程序。我有一个填充了从0到1的数字的Mat。我想通过将Mat中的每个值乘以255将其转换为灰度图像。

我该怎么做?

4 个答案:

答案 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):