Java 需要用android opencv在计数器区域绘制一个矩形
我需要用android opencv在计数器区域绘制一个矩形 这是我的代码,但我在Core.rectangle部分有错误,或者有没有简单的方法来绘制它Java 需要用android opencv在计数器区域绘制一个矩形,java,android,c++,opencv,image-processing,Java,Android,C++,Opencv,Image Processing,我需要用android opencv在计数器区域绘制一个矩形 这是我的代码,但我在Core.rectangle部分有错误,或者有没有简单的方法来绘制它 MatOfPoint2f approxCurve = new MatOfPoint2f(); List<Rect> ListOfRect = new ArrayList<Rect>(); for (int i=0; i<contours.size(); i++){ MatOfPoint2f
MatOfPoint2f approxCurve = new MatOfPoint2f();
List<Rect> ListOfRect = new ArrayList<Rect>();
for (int i=0; i<contours.size(); i++){
MatOfPoint2f contour2f = new MatOfPoint2f( contours.get(i).toArray() );
double approxDistance = Imgproc.arcLength(contour2f, true)*0.02;
Imgproc.approxPolyDP(contour2f, approxCurve, approxDistance, true);
MatOfPoint points = new MatOfPoint( approxCurve.toArray() );
Rect rect = Imgproc.boundingRect(points);
//error part
Core.rectangle(img, new Point(rect.x,rect.y), new Point(rect.x+rect.width,rect.y+rect.height), new Scalar( 0, 0, 255 ),0,8, 0);
}
error: The method rectangle(org.opencv.core.Mat, org.opencv.core.Point, org.opencv.core.Point, org.opencv.core.Scalar, int) in the type Core is not applicable for the arguments (org.opencv.core.Mat, android.graphics.Point, android.graphics.Point, org.opencv.core.Scalar, int)
正如错误消息所述,参数类型不匹配。您正在传递android.graphics.Point实例,但Core.rectangle需要org.opencv.Core.Point类型的对象 要解决此问题,可以使用Rect上的方法获取所需的点位置:
Core.rectangle(img, rect.tl(), rect.br(), new Scalar(0, 0, 255),0, 8, 0);
我解决这个问题的方法是使用Imgproc.rectangle而不是Core.rectangle。我学到的是Core.rectangle没有包含在版本3中,它必须被Imgproc类替换。希望有帮助 很好的解释,明白了。你能解释一下什么是tl和br吗?它们是矩形的左上角和右下角。我建议您也阅读文档。对于Java来说,这有点参差不齐,但它可以帮助您更好地处理事情。