博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】OpenCV对图片中的RotatedRect进行填充
阅读量:5226 次
发布时间:2019-06-14

本文共 1914 字,大约阅读时间需要 6 分钟。

 

函数名:full_rotated_rect

函数参数: image输入图像,rect希望在图像中填充的RotatedRect,color填充的颜色

主要的思路是:先找到RotatedRect的四个顶点,然后画出外框。再利用四个顶点找出其中平行两边的所有点,对相应的两个点进行连接。

1 void full_rotated_rect(Mat &image, const RotatedRect &rect, const Scalar &color)   2 {   3     CvPoint2D32f point[4];   4     Point pt[4];   5     vector
center1, center2; 6 7 /*画出外框*/ 8 cvBoxPoints(rect, point); 9 for (int i = 0; i<4; i++) 10 { 11 pt[i].x = (int)point[i].x; 12 pt[i].y = (int)point[i].y; 13 } 14 line(image, pt[0], pt[1], color, 1); 15 line(image, pt[1], pt[2], color, 1); 16 line(image, pt[2], pt[3], color, 1); 17 line(image, pt[3], pt[0], color, 1); 18 19 /*填充内部*/ 20 find_all_point(pt[0], pt[1], center1); /*找出两点间直线上的所有点*/ 21 find_all_point(pt[3], pt[2], center2); 22 vector
::iterator itor1 = center1.begin(), itor2 = center2.begin(); 23 while (itor1 != center1.end() && itor2 != center2.end()) 24 { 25 line(image, *itor1, *itor2, color, 1); /*连接对应点*/ 26 itor1++; 27 itor2++; 28 } 29 30 vector
().swap(center1); 31 vector
().swap(center2); 32 }

 

函数名:find_all_point

函数参数:start起始点,end结束点,save保存点的容器

主要思路:递归查找两点的中点,直到两点相同。

1 void find_all_point(Point start, Point end, vector
&save) 2 { 3 if (abs(start.x - end.x) <= 1 && abs(start.y - end.y) <= 1) 4 { 5 save.push_back(start); 6 return; /*点重复时返回*/ 7 } 8 9 Point point_center; 10 point_center.x = (start.x + end.x) / 2; 11 point_center.y = (start.y + end.y) / 2; 12 save.push_back(point_center); /*储存中点*/ 13 find_all_point(start, point_center, save); /*递归*/ 14 find_all_point(point_center, end, save); 15 }

原图:

填充后:

 

转自

转载于:https://www.cnblogs.com/codingmengmeng/p/6684553.html

你可能感兴趣的文章
SQL Server 2008连接字符串写法大全
查看>>
sql server 使用链接服务器远程查询
查看>>
JavaScript中的继承
查看>>
MySQL简介
查看>>
设计模式之桥接模式(Bridge)
查看>>
转:探讨跨域请求资源的几种方式
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
Android 开发 ThreadPool(线程池) 总结
查看>>
【poj1568】 Find the Winning Move
查看>>
【codevs1033】 蚯蚓的游戏问题
查看>>
TP框架中的page分页实现
查看>>
[转]跨越千年的RSA算法
查看>>
传奇学者应明生
查看>>
【程序执行原理】
查看>>
第二次项目冲刺(Beta阶段)5.24
查看>>
【线段树1】洛谷P3372
查看>>
解决Oracle RAC不能自动启动的问题
查看>>
多线程
查看>>