Java 需要用android opencv在计数器区域绘制一个矩形

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

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

正如错误消息所述,参数类型不匹配。您正在传递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来说,这有点参差不齐,但它可以帮助您更好地处理事情。