计算轮廓的最大内接矩形

89 篇文章 88 订阅 ¥69.90 ¥99.00

1,原理

基于中心扩展算法,给定一个初始锚点,往四个方向向外拓展,每个方向在拓展时遇到轮廓边界则停止。

获取的矩形是不带旋转的,且能否准确找到最大内接矩形,跟初始锚点的位置选取有一定关系

2,代码

代码分为2部分,原理一样,实现方式不同。

代码(1):


#include <iostream>
#include<opencv2/opencv.hpp>

#include<vector>

using namespace cv;
using namespace std;

/**
* @brief expandEdge 扩展边界函数
* @param img:输入图像,单通道二值图,深度为8
* @param edge  边界数组,存放4条边界值
* @param edgeID 当前边界号
* @return 布尔值 确定当前边界是否可以扩展
*/

bool expandEdge(const Mat & img, int edge[], const int edgeID)
{
	//[1] --初始化参数
	int nc = img.cols;
	int nr = img.rows;
	switch (edgeID) {
	case 0:
		if (edge[0] > nr)
			return false;
		for (int i = edge[3]; i <= edge[1]; ++i)
		{
			if (img.at<uchar>(edge[0], i) &
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
OpenCV是一个开源的计算机视觉库,提供了丰富的图像处理和分析功能。要获取一个最小外接四边形,可以使用OpenCV中的函数和方法。 首先,我们需要加载图像并进行必要的预处理。可以使用OpenCV的imread函数读取图像文件,然后可以应用一些滤波器和阈值操作,以减少图像噪声和增强边缘。接下来,我们可以使用findContours函数来查找图像中的轮廓。 找到轮廓后,可以通过计算每个轮廓的最小外接四边形来获取它们。在OpenCV中,可以使用minAreaRect函数来计算每个轮廓的最小外接矩形。该函数将返回一个RotatedRect对象,其中包含了最小外接矩形的相关信息,例如中心坐标、宽度、高度和旋转角度。 最后,我们可以使用drawing函数(如drawContours和rectangle)在原始图像上绘制最小外接矩形,以便进行可视化和分析。这样就可以获取到图像中的最小外接四边形了。 需要注意的是,获取最小外接四边形的结果可能不是一个正方形,而是一个倾斜的矩形。如果要获取一个正方形,可以在计算最小外接四边形后,再进行一些处理,例如计算矩形的对角线长度,以确定是否可以将其视为一个正方形。 总之,要使用OpenCV获取最小外接四边形,可以按照上述步骤加载图像、找到轮廓计算最小外接矩形,并在原始图像上绘制结果。这样就可以获取到图像中的最小外接四边形了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

thequitesunshine007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值