在OpenCV中绘制几何形状
void Demo::drawing_demo(Mat &image) {
Mat bg = Mat::zeros(image.size(), image.type()), dst;
//矩形
Rect rect;//可以用Rect定义矩形
rect.x = 200;//矩形左上角的坐标
rect.y = 200;//矩形左上角的坐标
//注:坐标系是以左上角为原点,右下角为正方向
rect.width = 80;
rect.height = 80;
rectangle(bg, rect, Scalar(0, 255, 0), -1, 8, 0);
//圆
circle(bg, Point(120, 120), 60, Scalar(255, 0, 0), 1, 8, 0);
//背景,圆心,半径,颜色,线宽
//线
line(bg, Point(0, 0), Point(200, 200), Scalar(0, 0, 255), 2, 8, 0);
//背景,起始点,结束点,颜色,线宽
//椭圆
//和矩形一样,可以先定义
RotatedRect rrt;
rrt.size = Size(100, 200);//长轴短轴
rrt.center = Point(120, 120);//中心坐标
rrt.angle = 45;//旋转角度
ellipse(bg, rrt, Scalar(255, 255, 0), 1, 8);
//addWeighted(bg, 0.6, image, 0.4, 0, dst);
imshow("绘制演示",dst);
}
需要注意的是,在绘制矩形椭圆这些参数较多的几何图形时,我们可以先创建一个图形,防止括号内参数过多,影响可读性,但是直接绘制也是可以的,如矩形的绘制也可以采用这种方式:
rectangle(bg, Rect(200, 200, 60, 60), Scalar(0,255,255), -1, 8, 0);
当然所有图形都可以采用先定义后绘制的方式。
最后一个参数是

本文介绍了在OpenCV中如何绘制几何形状,包括矩形、多边形,并使用RNG生成随机数进行图形绘制。详细讲解了多边形的定义和填充方法,以及如何响应鼠标事件来实现实时图形交互,包括绘制矩形和显示选中部分的技巧。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



