OPENCV-C++ 找到最大内接矩形(正方形)

这源代码本来是检测最大内接圆形的,本人想要矩形,所以变成了正方形;谨慎使用;不是严格意义上的最大内接矩形;

cv::Mat map_one_label = cv::imread("src.png",cv2.IMREAD_GRAYSCALE); //默认灰度图
std::vector<Rect> max_in_quare_rect  = get_max_in_quare_rec(map_one_label);
std::vector<Rect> get_max_in_quare_rec(Mat &map_one_label){std::vector<Rect> results;Rect ccomp;cv::Point center(map_one_label.cols / 2, map_one_label.rows / 2);vector<vector<Point>> contours;vector<Vec4i> hierarchy;findContours(map_one_label, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);for (int i = 0; i < contours.size(); i++){Mat  dist = Mat::zeros(map_one_label.size(), CV_32F);        //定义一个Mat对象,存放原图中每个点到该轮廓的距离,为浮点型数据//遍历每个点,计算该点到轮廓距离for (int row = 0; row < map_one_label.rows; row++){for (int col = 0; col < map_one_label.cols; col++){//通过点多边形检测计算获得点到轮廓距离,并存放至dist中dist.at<float>(row, col) = pointPolygonTest(contours[i], Point(col, row), true);}}//计算dist中,最大值和最小值,以及其位置坐标double minVal, maxVal;Point maxloc, minloc;minMaxLoc(dist, &minVal, &maxVal, &minloc, &maxloc);int radio = abs(maxVal);         //对最大值求绝对值,即为内接圆半径cout << "haha " << radio << endl;Point center;center = maxloc;    //某点与轮廓距离为最大值,则该点为内接圆圆心cv::Point point_tl(center.x-radio , center.y-radio);cv::Point point_dr(center.x+radio , center.y+radio);cv::Rect rect1(point_dr , point_tl );results.push_back(rect1);}imshow("src", map_one_label);cv::waitKey(0);return results;}

原图

检测结果:

OPENCV C++ 找到最大内接矩形(正方形)相关推荐

  1. OPENCV 寻找图形最大内接矩形

      轮廓的最大外接矩形,Opencv有提供的现成的算法,最大内接圆也有提供的算法.但是没有现成的内接矩形的算法.本文使用C++实现了取轮廓最大内接矩形的方式,供大家参考. 实现的基本思路是: 处理图片 ...

  2. opencv 最大内接矩形笔记

    python 最小外接矩形, 最小外接矩形的顶点坐标:cv2.boxPoints cnt = np.array([[data_0_x, data_0_y], [data_1_x, data_1_y], ...

  3. OpenCV轮廓最大内接矩形(带角度)-计算与绘制(Python / C++源码)

    实现效果 OpenCV获取轮廓/Blob最大内接矩形(带角度) 实现源码 一.C++ OpenCV实现: #include "pch.h" #include <iostrea ...

  4. opencv实现轮廓的内接正矩形

    参考python-opencv 图像捕捉多个不规则轮廓,与轮廓内接区域(圆/矩形)思路-持续更新编辑中(会附上详细的思路解释和图片) - Lorzen - 博客园 前言 提示:利用中心延展算法的思想, ...

  5. python莫比乌斯内接矩形_用莫比乌斯带巧解内接矩形问题:拓扑学的用处

    问题 对于任意的闭合环路,是否总能在其上找到四个点形成一个矩形? 该问题也被称为内接矩形问题,而内接正方形问题至今没有解答方案. 首先我们不再关注单个而是成对的点,并利用矩形的性质:对于平面上任意两对 ...

  6. 用莫比乌斯带巧解内接矩形问题:拓扑学的用处

    问题 对于任意的闭合环路,是否总能在其上找到四个点形成一个矩形? 该问题也被称为内接矩形问题,而内接正方形问题至今没有解答方案. 首先我们不再关注单个而是成对的点,并利用矩形的性质:对于平面上任意两对 ...

  7. 使用OpenCV检测图像中的矩形

    前言 1.OpenCV没有内置的矩形检测的函数,如果想检测矩形,要自己去实现. 2.我这里使用的OpenCV版本是3.30. 矩形检测 1.得到原始图像之后,代码处理的步骤是: (1)滤波增强边缘. ...

  8. opencv 识别长方形_使用OpenCV检测图像中的矩形

    本文实例为大家分享了OpenCV检测图像中矩形的具体代码,供大家参考,具体内容如下 前言 1.OpenCV没有内置的矩形检测的函数,如果想检测矩形,要自己去实现. 2.我这里使用的OpenCV版本是3 ...

  9. 《用莫比乌斯带巧解内接矩形问题:拓扑学的用处》学习笔记

    昨天 Rocket101 孟美岐 发歌了,刚刚看到,犹豫了一会磕不磕.最后含是氪了一发,唱的含行,可惜旋律一般好听,没有加入歌单. Bilibili链接 用莫比乌斯带巧解内接矩形问题:拓扑学的用处.- ...

  10. 获取轮廓、获取内接矩形

    对原图像,使用Imgproc.findContours获取轮廓. 对轮廓,使用Imgproc.minAreaRect获取轮廓的内接矩形(可能会有旋转角度). 对上述内接矩形使用boundingRect ...

最新文章

  1. Java及Android开发环境搭建
  2. 重温强化学习之马尔可夫决策过程(MDPs)
  3. 人工智能靠人工:标注员1天要听1000条录音
  4. Django restful framework之 rest接口设计规范
  5. keepalived(1)——准备
  6. 改改Python代码,运行速度还能提升6万倍
  7. 数据库系统开发生命周期各个阶段需要获取的数据以及生成的文档
  8. haproxy+keepalived实现高可用负载均衡
  9. lambdapython语法_Python中lambda表达式的语法与应用
  10. CodeForces 551E(平方分割
  11. css画饼状图圆形,CSS样式圆形饼图百分比
  12. java命令行导出、导入sql文件
  13. python 迭代器的方法_python--魔法方法,属性和迭代器
  14. Eviews9.0---软件安装
  15. 利用python从网络上爬取图片_我用Python爬取了妹子网100G的套图
  16. java 实现按规则自增功能_java基础(二) 自增自减与贪心规则
  17. 论文解读|BMVC 2019|DABNet: Depth-wise Asymmetric Bottleneck for Real-time Semantic Segmentation
  18. 词嵌入(word embedding)(pytorch)
  19. Django电商项目(八)短信验证码的前后端实现
  20. 小程序使用vant中的步骤条 vant-steps

热门文章

  1. java math 三角函数_Java Math类的常用方法,三角函数运算
  2. Dzd电子书格式转换程序Txt2Dzd
  3. hwaddr和macaddr的区别
  4. [0CTF 2016]piapiapia
  5. 0CTF 2016 RSA?(未完成)
  6. golang中实现RSA(PKCS#1)加密解密
  7. zotero导出PDF
  8. 19张网络工程师必看的思维导图
  9. sharepoint文件夹本地同步_DIY游戏云存档 - 单机游戏存档多机异地同步方案
  10. java面试时怎么做自我介绍_面试时如何做好自我介绍