[英]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.