【问题标题】:Translate C++ code to Java with Mat object使用 Mat 对象将 C++ 代码转换为 Java
【发布时间】:2021-03-27 11:53:46
【问题描述】:

我在分水岭算法上使用 C++ 在 Visual Studio 中有工作代码,我需要将其传递给 Android Studio。我已将 OpenCV 库添加到应用程序中,并且简单的操作工作正常。现在,我的问题是,当我想将代码传递给 Java 时,有一个我不知道如何传递的特定行类型。部分代码为:

cv::Mat markers(original.size(), CV_8U, cv::Scalar(-1));
//Rect(topleftcornerX, topleftcornerY, width, height);
//top rectangle
markers(Rect(0, 0, original.cols, 5)) = Scalar::all(1);
//bottom rectangle
markers(Rect(0, original.rows - 5, original.cols, 5)) = Scalar::all(1);
//left rectangle
markers(Rect(0, 0, 5, original.rows)) = Scalar::all(1);
//right rectangle
markers(Rect(original.cols - 5, 0, 5, original.rows)) = Scalar::all(1);

对象的创建会是这样的:

Mat markers = new Mat(rgba.size(), CvType.CV_8UC3, new Scalar(-1));

但是其余的行不知道它们将如何转换。请帮忙?

【问题讨论】:

  • 你知道这些行在 C++ 中的作用吗?如果没有,从那里开始弄清楚这些行完成了什么。一旦你知道了,就假装 C++ 不存在并在 Java 中实现同样的东西。
  • 我知道在标记上添加一个矩形,但我不知道怎么做@PaulMcKenzie

标签: java c++ android-studio opencv


【解决方案1】:

markers.submat(0, 0, original.cols, 5).setTo(new Scalar(1, 1, 1));

或

Imgproc.rectangle (
     markers,                    
     new Point(0, 0),        
     new Point( original.cols, 5),       
     new Scalar(1, 1, 1),     
     -1                          
  );

【讨论】:

  • 谢谢。我尝试并编译,但是当我尝试编辑标记图像时没有发生任何事情。我的图像首先是黑色的,中心有一个正方形,但不要这样做。你知道为什么吗??
  • 尝试绘制一个白色矩形进行调试:Imgproc.rectangle (markers,new Point(0, 0),new Point(10, 10), new Scalar(255), -1);
猜你喜欢
  • 2014-05-11
  • 2016-04-14
  • 2014-05-27
  • 2015-09-27
  • 2014-09-16
  • 2015-08-22
  • 2011-08-18
  • 2017-02-15
  • 1970-01-01
相关资源
最近更新 更多