在opencv中下面的代码行是什么意思?

这段代码行的含义是什么?如何将此代码转换为javacv?

gray = Scalar::all(255); 

这是与此代码行相关的完整代码。

 Mat src = imread("in.jpg"), gray; cvtColor(src, gray, CV_BGR2GRAY); threshold(gray, gray, 230, 255, THRESH_BINARY_INV); vector hierarchy; vector<vector > contours; findContours(gray, contours, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE); gray = Scalar::all(255); 

有人可以解释一下吗?

正如我在评论中提到的,它用于将灰色图像设置为白色。

它的好处是什么? 只有当我们知道这段代码是什么或者看到完整的代码时,才可以说。

关于Java,OpenCV现在有一些android示例,您可以在其中找到Java代码。

你可以检查一下。 我在那里看到了类似的function : mWhilte = Scalar.all(255);

另请查看JavaCV示例: http : //code.google.com/p/javacv/wiki/OpenCV2_Cookbook_Examples_Chapter_2

突出显示的代码行将灰色设置为255.这是OpenCV中可用于将矩阵设置为值的方法之一。

其他方法是:

 gray.setTo(255); // prior to 2.3.1 it was a buggy on multichannel images gray = 255; // prior to 2.3.1 it was a buggy on multichannel images gray.setTo(Scalar::all(255)); // it works regardless the OpenCV version. 

但我认为问题是为什么这条源线在findfContours之后……

根据文档,findContours修改它正在处理的图像(它提取轮廓,检测它,然后继续下一个轮廓,直到没有更多的轮廓)。 结果是垃圾图像(可能是黑色)。

因此,set-to-255行将其清除以用于其他用途。

Mat::setTo()方法也应该在JavaCV中可用,因此您不应该在将其转换为Java时遇到问题