【问题标题】:What is the meaning of following code line in opencv?opencv中以下代码行是什么意思?
【发布时间】:2012-07-11 14:27:02
【问题描述】:

这段代码行是什么意思,我怎样才能把这段代码转换成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<Vec4i> hierarchy;
vector<vector<Point> > contours;
findContours(gray, contours, hierarchy, CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);

gray = Scalar::all(255);

请有人解释一下吗?

【问题讨论】:

  • 这段代码是关于什么的?
  • 用于在图像中查找轮廓,后面还有一些代码
  • 我认为那条线会使灰色变成白色。如果你可以运行cpp代码,运行它并在最后显示灰色。
  • 请有人提供在 javacv 上执行相同功能的代码行吗?
  • 为什么有这么多追随者的问题是:port this code to JavaCVWhat does it mean in javacv??

标签: java opencv javacv


【解决方案1】:

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

它有什么好处?只有知道这段代码是干什么用的或者看到完整的代码才能说。

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

您可以检查它们。 I saw a similar function theremWhilte = Scalar.all(255);

同时检查 JavaCV 示例:http://code.google.com/p/javacv/wiki/OpenCV2_Cookbook_Examples_Chapter_2

【讨论】:

    【解决方案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 应该不会有问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      相关资源
      最近更新 更多