简体   繁体   English

如何在Java OpenCV中执行联合操作

[英]How to perform a union operation in java opencv

I need to write an equivalent Java OpenCV code as this C++ code 我需要编写等效的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;

When i tried to use the | 当我尝试使用| operator it leads to an error. 运算符会导致错误。

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;

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

Union operator, logic-or (|) for two matrix of the OpenCV: 联合运算符,OpenCV的两个矩阵的logic-or (|)

Code in C++: 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; 

Code in Java: 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);

Code in Python: 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)

I think what you're mistaking is that you are trying to compare two Mat object refrences and not the values beneath them. 我认为您误会是要比较两个Mat对象引用而不是它们下面的值。 I'm not super familiar with openCV but my guess is you are trying to combine the values under them, so you could use the method https://docs.opencv.org/java/2.4.2/org/opencv/core/Mat.html#nativeObj . 我对openCV不太熟悉,但是我猜您正在尝试合并它们下的值,因此可以使用方法https://docs.opencv.org/java/2.4.2/org/opencv/core/ Mat.html#nativeObj which that line in question would be re-written as: Mat hsvThres = new Mat(mask1.nativeObj | mask2.nativeObj); 有问题的那一行将被重写为: Mat hsvThres = new Mat(mask1.nativeObj | mask2.nativeObj);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM