1.普通几何绘制及原图融合
1.rectangle 矩形绘制
之前讲过了,略
示例代码
注:也可以不新建,直接在原图上面画
void QuickDemo::drawing_demo(Mat& image) {
Rect rect;//关于rect坐标类,我们只要记住四个属性即可
rect.x = 50;
rect.y = 50;
rect.width = 50;
rect.height = 50;
Mat dst = Mat::zeros(image.size(), image.type());
rectangle(dst, rect, Scalar(0, 0, 255), -1, LINE_8, 0);
imshow("绘制图形", dst);
}
2.circle 绘制圆形
共7个参数
第1个参数 输入
第2个参数 圆心点
第3个参数 圆形半径
第4个参数 圆形颜色
第5个参数 线宽
第6个参数 lineType 8和line8一样,一般都是
第7个参数 缩小图像,同时缩短圆心与(0,0)位置的距离
0表示不变
1表示图像*1/2,同时距离(0,0)的x方向和y方向距离*1/2
2表示图像*(1/2)^2,同时距离(0,0)的x方向和y方向距离*(1/2)^2
示例代码
void QuickDemo::drawing_demo(Mat& image) {
Mat dst = Mat::zeros(image.size(), image.type());
circle(dst, Point(100, 100), 50, Scalar(200, 0, 0), -1, 8, 0);
imshow("绘制图形", dst);
}
3.ellipse 绘制椭圆
ellipse
绘制椭圆
共5个参数
第1个参数 输入
第2个参数 RotatedRect
第3个参数 椭圆颜色
第4个参数 线宽
第5个参数 lineType
void QuickDemo::drawing_demo(Mat& image) {
Mat dst = Mat::zeros(image.size(), image.type());
RotatedRect rrt;
rrt.center = Point(200, 200); //椭圆的中心
rrt.size = Size(100, 50); //椭圆两个轴大小的一半
rrt.angle = 0; //椭圆的旋转角度
ellipse(dst,rrt,Scalar(200,0,0),10,8);
imshow("绘制图形", dst);
}
4.图像融合几何图形
接下来,这里演示一种很有意思的用法利用addWeighted融合几何图形与原图像
void QuickDemo::drawing_demo(Mat& image) {
Mat dst = Mat::zeros(image.size(), image.type());
RotatedRect rrt;
rrt.center = Point(200, 200); //椭圆的中心
rrt.size = Size(100, 50); //椭圆两个轴大小的一半
rrt.angle = 0; //椭圆的旋转角度
ellipse(dst,rrt,Scalar(200,0,0),10,8);
addWeighted(image, 0.7, dst, 0.3, 0, dst);
imshow("绘制图形", dst);
}
可以看到,这种隐约的图形效果很nice,只在原图像上绘制图形是达不到这种效果的