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

时间:2014-09-15 17:36:50

标签: 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 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)

2 个答案:

答案 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);