个人资料,仅供学习使用
修改时间——2022年2月13日 09:47:32
学习课程:OpenCV4 C++ 快速入门视频30讲
视频老师:贾志刚

14 图像几何形状绘制

opencv知识点:

  • 四种几何图形绘制 - 矩形 圆形 线段 椭圆
  • 图片融合 - addWeighted

本课所解决的问题:

  • 如何绘制几何图形?

1.图形绘制

在opencv中,图像的坐标是,↓y,→x,在填写参数的时候一定要注意
接下来,我们开始绘制几何图形

矩形

之前已经介绍过两种rectangle的所有参数,这里不再赘述
//函数定义
void drawing_demo(Mat& image);//函数实现
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);}


圆形

circle绘制圆形共7个参数第1个参数 输入第2个参数 圆心点第3个参数 圆形半径第4个参数 圆形颜色第5个参数 线宽第6个参数 lineType第7个参数  缩小图像,同时缩短圆心与(0,0)位置的距离0表示不变1表示图像*1/2,同时距离(0,0)的x方向和y方向距离*1/22表示图像*(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);
}


线段

line绘制线段共7个参数第1个参数 输入第2个参数 起点第3个参数 终点第4个参数 线段颜色第5个参数 线宽(注意,这个时候线宽只能>=0)第6个参数 lineType第7个参数  缩短线段左上顶点与(0,0)位置的距离0表示不变1表示图像*1/2,同时距离(0,0)的x方向和y方向距离*1/22表示图像*(1/2)^2,同时距离(0,0)的x方向和y方向距离*(1/2)^2
void QuickDemo::drawing_demo(Mat& image) {Mat dst = Mat::zeros(image.size(), image.type());line(dst, Point(100, 100), Point(300, 300), Scalar(33, 55, 66), 30, 8, 0);imshow("绘制图形", dst);
}


椭圆
在opencv中,椭圆有两种传参方式

第一种,全功能版本

ellipse绘制椭圆共10个参数第1个参数 输入第2个参数 椭圆中心第3个参数 椭圆两个轴的一半(类似于圆的半径)第4个参数 椭圆的初始角度第5个参数 绘制的起点角度第6个参数 绘制的终点角度第7个三叔 椭圆的颜色第8个参数 线宽第9个参数 lineType第10个参数 缩小图像,同时缩短圆心与(0,0)位置的距离0表示不变1表示图像*1/2,同时距离(0,0)的x方向和y方向距离*1/22表示图像*(1/2)^2,同时距离(0,0)的x方向和y方向距离*(1/2)^2
void QuickDemo::drawing_demo(Mat& image) {Mat dst = Mat::zeros(image.size(), image.type());ellipse(dst, Point(200, 200), Size(100, 50), 0, 0, 270, Scalar(200, 0, 0), 10, 8, 0);imshow("绘制图形", dst);
}

第二种,简易版本

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);
}

2.图像融合几何图形

接下来,这里演示一种很有意思的用法

  • 利用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,只在原图像上绘制图形是达不到这种效果的

本课所用API查阅

rectangle



circle


line


ellipse




addWeighted




dst = src1*alpha + src2*beta + gamma;

【个人笔记】OpenCV4 C++ 快速入门 14课相关推荐

  1. 【个人笔记】OpenCV4 C++ 快速入门 17课

    个人资料,仅供学习使用 修改时间--2022年1月23日 17:59:14 学习课程:OpenCV4 C++ 快速入门视频30讲 视频老师:贾志刚 17 鼠标操作与响应 opencv知识点: 设置指定 ...

  2. 【个人笔记】OpenCV4 C++ 快速入门 28课

    个人资料,仅供学习使用 修改时间--2022年2月19日 14:56:40 学习课程:OpenCV4 C++ 快速入门视频30讲 视频老师:贾志刚 28 高斯模糊 opencv知识点: 高斯模糊 - ...

  3. 【个人笔记】OpenCV4 C++ 快速入门 29课

    个人资料,仅供学习使用 修改时间--2022年2月19日 15:02:27 学习课程:OpenCV4 C++ 快速入门视频30讲 视频老师:贾志刚 29 高斯双边模糊 opencv知识点: 高斯双边模 ...

  4. 【个人笔记】OpenCV4 C++ 快速入门 26课

    个人资料,仅供学习使用 修改时间--2022年2月13日 20:49:07 学习课程:OpenCV4 C++ 快速入门视频30讲 视频老师:贾志刚 26 直方图均衡化 opencv知识点: 均衡灰度图 ...

  5. 【个人笔记】OpenCV4 C++ 快速入门 25课

    个人资料,仅供学习使用 修改时间--2022年2月13日 20:45:23 学习课程:OpenCV4 C++ 快速入门视频30讲 视频老师:贾志刚 25 二维直方图 opencv知识点: 计算直方图数 ...

  6. 【个人笔记】OpenCV4 C++ 快速入门 23课

    个人资料,仅供学习使用 修改时间--2022年1月26日 00:49:43 学习课程:OpenCV4 C++ 快速入门视频30讲 视频老师:贾志刚 23 视频处理与保存 opencv知识点: Vide ...

  7. 【个人笔记】OpenCV4 C++ 快速入门 22课

    个人资料,仅供学习使用 修改时间--2022年1月25日 22:09:17 学习课程:OpenCV4 C++ 快速入门视频30讲 视频老师:贾志刚 22 视频文件摄像头使用 opencv知识点: VI ...

  8. 【个人笔记】OpenCV4 C++ 快速入门 20课

    个人资料,仅供学习使用 修改时间--2022年1月24日 22:09:02 学习课程:OpenCV4 C++ 快速入门视频30讲 视频老师:贾志刚 20 图像翻转 opencv知识点: 图像翻转 - ...

  9. 【个人笔记】OpenCV4 C++ 快速入门 19课

    个人资料,仅供学习使用 修改时间--2022年1月24日 20:17:13 学习课程:OpenCV4 C++ 快速入门视频30讲 视频老师:贾志刚 19 图像放缩与插值 opencv知识点: 图像放缩 ...

最新文章

  1. 不降低scipy版本解决AttributeError: module ‘scipy.misc‘ has no attribute ‘imresize‘问题
  2. python redis 人员信息查询_python redis 模块查询数据结果 bytes 类型转码的方法
  3. TSQL中实现ORACLE的多列IN 多列匹配。
  4. 财务一体化项目,进度与计划8
  5. ucenter 显示通信成功的条件
  6. linux输入influxdb密码,influxdb开启身份验证
  7. python数据结构与算法13_python3数据结构与算法
  8. Linux之centos7 VMware安装教程
  9. Atitit.如何建立研发体系
  10. jdk7 linux 32位 安装包 微云网盘下载
  11. 美通企业日报 | 英国名校哈罗落户深圳;绿叶与克利夫兰医学中心在沪打造未来医院...
  12. Windows无线网络设置中的7种安全类型简介
  13. java9.0.4配置_Tomcat 9.0 安装配置
  14. storm流程——storm
  15. 机器学习笔记--微积分
  16. Rabbitmq面试题总结,非常详细,杜绝标题党,不详细你打我,下次不写博客了
  17. .cfg\.dat\.mak(持续补充)
  18. linux 显卡驱动 安装
  19. webpack css字体引入使用
  20. markdown设置图片相对路径显示

热门文章

  1. php set_time_limit()的作用是什么
  2. 学习springBoot(8)RabbitMQ
  3. 彻底理解Java的Future模式
  4. Unix环境高级编程(二)文件和目录
  5. 你不可不知的HTML优化技巧
  6. Pwn2Own黑客大赛战况:iPhone 20秒被黑
  7. 开源.NET(C#、VB.NET、J#等)脚本执行引擎(利用CodeDOM)
  8. 用GibbsLDA做Topic Modeling
  9. 2021年年度最优质开源软件
  10. Spring框架入门(一)