采用中心往外扩张的方法,目前是特定的场景下使用。

bool expandEdge(const Mat & img, int edge[], const int edgeID, bool EXPAND[])
{//[1] --初始化参数int nc = img.cols;int nr = img.rows;switch (edgeID) {case 0:if (edge[0]>nr || EXPAND[0] == false)return false;for (int i = edge[3] + 1; i < edge[1]; ++i){if (img.at<uchar>(edge[0], i) == 0)//遇见0像素表明碰到边缘线{return false;}}edge[0]++;return true;break;case 1:if (edge[1]>nc || EXPAND[1] == false)return false;for (int i = edge[2] + 1; i < edge[0]; ++i){if (img.at<uchar>(i, edge[1]) == 0)//遇见0像素表明碰到边缘线{return false;}}edge[1]++;return true;break;case 2:if (edge[2]<0 || EXPAND[2] == false)return false;for (int i = edge[3] + 1; i < edge[1]; ++i){if (img.at<uchar>(edge[2], i) == 0)//遇见0像素表明碰到边缘线{return false;}}edge[2]--;return true;break;case 3:if (edge[3]<0 || EXPAND[3] == false)return false;for (int i = edge[2] + 1; i < edge[0]; ++i){if (img.at<uchar>(i, edge[3]) == 0)//遇见0像素表明碰到边缘线{return false;}}edge[3]--;return true;break;default:return false;break;}
}cv::Rect InSquare(Mat &img, const Point center)
{// --[1]参数检测if (img.empty() || img.channels()>1 || img.depth()>8)return Rect();// --[2] 初始化变量int edge[4];edge[0] = center.y + 1;//topedge[1] = center.x + 1;//rightedge[2] = center.y - 1;//bottomedge[3] = center.x - 1;//left//[2]// --[3]边界扩展(中心扩散法)bool EXPAND[4] = { 1,1,1,1 };//扩展标记位int n = 0;while (EXPAND[0] || EXPAND[1] || EXPAND[2] || EXPAND[3]){int edgeID = n % 4;EXPAND[edgeID] = expandEdge(img, edge, edgeID, EXPAND);n++;}//[3]//qDebug() << edge[0] << edge[1] << edge[2] << edge[3];Point tl = Point(edge[3], edge[0]);Point br = Point(edge[1], edge[2]);return Rect(tl, br);
}int calcMaxCoheRect(Mat &srcMat, Rect &maxCoheRect)
{//设置中心if (srcMat.empty()){cout << "fali" << endl;return 1;}Point center(srcMat.cols / 2, srcMat.rows / 2);Rect rr = InSquare(srcMat, center);maxCoheRect = rr;return 0;
}

原图:

结果:

求区域的最大内接矩形相关推荐

  1. 求四边形最大内接矩形_三角形内接矩形的最大面积问题

    龙源期刊网 http://www.qikan.com.cn 三角形内接矩形的最大面积问题 作者:李云虎 来源:<中学教学参考 · 理科版> 2013 年第 01 期 [问题]美佳玩具厂生产 ...

  2. opencv 最大内接矩形笔记

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

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

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

  4. 轮廓的最大面积内接矩形/内接圆计算

    1.求出轮廓重心(X0,Y0). 2.找出轮廓上点到重心的距离最大的点1. 3.连接点到重心形成线段,做线段反向等距离延长线段,得到点2. 4.内接矩形:根据对角线上的(点1,点2),根据旋转矩形和平 ...

  5. 图像处理--最大内接矩形

    文章目录 0.提取效果 1. 最大内接矩形 1.2 遍历法.中心扩散法 1.3 柱状图方法 参考 0.提取效果 1. 最大内接矩形 这里所说的最大内接矩形简单说是闭合轮廓内矩形面积最大的矩形.如果闭合 ...

  6. python如何做四象图_Python使用四个坐标点来剪切图像目标区域的最小外接矩形,python,利用,对,图片,进行,裁剪...

    在图像裁剪操作中,opencv和pillow两个库都具有相应的函数,但是这两个库中的函数仅仅能对与图片平行的矩形进行裁剪操作,如果想要对目标的最小外接矩形进行裁剪该如何操作呢?如下所示: 具体处理该问 ...

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

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

  8. C++继承——以应用抽象类,求圆、圆内接正方形、圆外切正方形的面积和周长为例

    c++中基类的继承及其使用,以圆的内接正方形和外切正方形为例 1:C++中继承的方式 C++中的继承主要分为三类:public公有继承.protected保护继承以及private私有继承,其使用范围 ...

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

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

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

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

最新文章

  1. Vue中的基础过渡动画原理解析
  2. 考试系统(未完成的小程序)
  3. Python 2退出历史舞台 一句话证明它的重要性
  4. OpenCV在相机或图像中检测QR码的实例(附完整代码)
  5. Java 开发人员 2019 生态系统信息图
  6. docker中使用golang:alpine镜像制作开启goweb的dockerfile
  7. *由易到难的讲解动态规划(精)
  8. vissim免修改时间工具_App闪退怎么办?免越狱如何安装未签名的App?
  9. 《5》CentOS7.0+OpenStack+kvm云平台的部署—组态Horizon
  10. CSU 1203 Super-increasing sequence
  11. 美团互助关停:聚焦主业发展 将全额返还会员分摊
  12. 集成电路工艺专题复习
  13. WPS标题编号级别,根据上一级自动编号
  14. 说说橡胶软接头安装的误区
  15. 支付宝APP支付-Android+springboot搭建后端
  16. hibernate使用Query进行查询
  17. iOS视频转Gif(附example code)
  18. php的惰性加载,thinkphp5.0的惰性加载
  19. php jws 数据签名,JSON Web Signature 规范解析
  20. hx711c语言程序,51单片机HX711传感器电子秤设计(原理图、程序源码、BOM等)

热门文章

  1. python 爬取12306验证码
  2. 《神经网络与深度学习》读书笔记(不完全)
  3. 时间格式2020-01-13T16:00:00.000Z中的T和Z分别表示什么,如何处理
  4. STM32F103 SDID模块SDHC卡读写
  5. 如何修改linux启动项目路径,Jetty配置虚拟目录,实现把web项目发布到自定义目录,指定指定上下文访问;jetty编码修改;Jetty加入Linux service实现开机自启动...
  6. 实践:加快gradle的构建速度
  7. 斯特林(Stirling)数
  8. PID调节经验知识梳理
  9. 有道云笔记分享_原来分享可以更美的 有道云笔记分享功能优雅变身
  10. Java替换第一个和最后一个字符串