需要用android opencv在柜台区域绘制一个矩形

Need to Draw a rectangle in counter area with android opencv

本文关键字:一个 绘制 区域 android opencv 柜台      更新时间:2023-10-16

i需要用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)

我解决这个问题的方法是使用Imgproc.rectagle而不是Core.ctagle。我了解到Core.ctangle没有包含在版本3中,必须用Imgproc类替换。希望能有所帮助。

正如您的错误消息所述,参数类型不匹配。您正在传递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);