我需要使用android opencv在计数器区域绘制一个矩形 这是我的代码,但我在Core.rectangle部分有错误或有没有简单的方法来绘制它?
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)
答案 0 :(得分:2)
我解决此问题的方法是使用Imgproc.rectangle而不是Core.rectangle。我学到的是Core.rectangle未包含在版本3中,必须用Imgproc类替换。希望有所帮助。
答案 1 :(得分:0)
如您的错误消息所述,参数类型不匹配。您正在传递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);