【问题标题】:How to perform a union operation in java opencv如何在java opencv中执行联合操作
【发布时间】:2018-10-10 19:38:10
【问题描述】:

我需要编写一个等效的 Java OpenCV 代码作为这个 C++ 代码

Mat1b mask1, mask2;
inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1);
inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2);

Mat1b mask = mask1 | mask2;

当我尝试使用 | 运算符时,它会导致错误。

Mat mask1 = new Mat();
Mat mask2 = new Mat();
Core.inRange(hsv, new Scalar(0, 70, 50), new Scalar(10, 255, 255), mask1);
Core.inRange(hsv, new Scalar(170, 70, 50), new Scalar(180, 255, 255), mask2);

Mat hsvThres = mask1 | mask2;

错误:The operator | is undefined for the argument type(s) org.opencv.core.Mat

【问题讨论】:

  • THIS 有帮助吗?
  • 很遗憾没有:(
  • THIS 怎么样?
  • 问题是我处理的是矩阵而不是数组,它不适用于 Mat
  • 感谢您的帮助,我从您提供的文档中尝试过 Core.bitwise_or(mask1, mask2, hsvThres) 但我不知道为什么它没有提供与 C++ 代码相同的结果,结果与正确的完全相去甚远。

标签: java opencv image-processing bitwise-operators


【解决方案1】:

联合运算符,logic-or (|) 用于 OpenCV 的两个矩阵:

C++ 代码:

inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1);
inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2);

Mat mask = mask1 | mask2; 

Java 代码:

Mat mask1 = new Mat();
Mat mask2 = new Mat();
Core.inRange(hsv, new Scalar(0, 70, 50), new Scalar(10, 255, 255), mask1);
Core.inRange(hsv, new Scalar(170, 70, 50), new Scalar(180, 255, 255), mask2);

Mat mask= new Mat();
Core.bitwise_or(mask1, mask2, mask);

Python 代码:

mask1 = cv2.inRange(hsv, (0, 70, 50), (10, 255, 255))
mask2 = cv2.inRange(hsv, (170, 70, 50), (180, 255, 255))
mask = cv2.bitwise_or(mask1, mask2)

【讨论】:

    【解决方案2】:

    我认为您误会是您试图比较两个 Mat 对象引用,而不是它们下面的值。我对 openCV 不是很熟悉,但我猜你正在尝试组合它们下面的值,所以你可以使用方法https://docs.opencv.org/java/2.4.2/org/opencv/core/Mat.html#nativeObj。有问题的那一行将被重写为: Mat hsvThres = new Mat(mask1.nativeObj | mask2.nativeObj);

    【讨论】:

    • 同时查看主要代码源以更好地理解Link
    • @scigs mask1mask2 是两个数组
    • No mask1mask2 不是数组,它们是 Mat 类型的数组,用于指定矩阵的 openCV,mask1.nativeObj 产生许多类型 longSystem.out.println(mask1.nativeObj); //140424926904688
    猜你喜欢
    • 1970-01-01
    • 2020-07-11
    • 2019-07-19
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    相关资源
    最近更新 更多