需要用android opencv在柜台区域绘制一个矩形
Need to Draw a rectangle in counter area with android opencv
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);
相关文章:
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 绘制一个对象,比较模具缓冲区的两个不同值
- 使用 glDrawElements 绘制一个 std::vector
- 我正在尝试创建一个 C++ 贪吃蛇游戏,但我似乎无法绘制第二个高度边框,我该如何解决这个问题?
- 如何在openGL C++中绘制一个空心圆
- 尝试绘制存储在数组中的矩形,但只出现一个矩形?
- Opencv,在图像中的对象周围绘制一个框
- OpenGL 2D游戏只绘制第二个精灵纹理而不是第一个
- 图层不会绘制另一个图层
- 绘制椭圆延迟并绘制另一个椭圆延迟
- OPENCV C .在for循环中在不同的图像像素上绘制一个圆圈(应在每个循环运行时将图像打开)
- 直接X 11:在屏幕上绘制一个简单的彩色矩形
- 使用 C++ 库 GLEW 在 openGl 中绘制一个红色三角形
- 在另一个线程中绘制 OpenGL
- 如何在 MFC 中围绕当前光标的位置绘制一个矩形
- SFML在另一个对象上方绘制对象
- 创建一个包含要绘制的项的类(seg-fault)
- 为什么我的 OpenGL 对象相对于最后一个绘制的对象绘制
- 如何保持一个绘制矩形在相同的地方,因为相机周围移动
- 是否有可能保存当前的视口,然后在OpenGL和c++中在下一个绘制周期中重新绘制保存的视口?