matlab 图像内接矩形,图像轮廓最大内接矩形的求法

本文介绍了如何在MATLAB中计算图像轮廓的最大内接矩形。通过使用OpenCV库,首先进行图像转换和阈值处理以获取轮廓,然后通过排序轮廓点来确定内接矩形的坐标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平时工作中图像处理经常会用到图像最大轮廓及最小外接矩形的获取:

计算过程如下:

img = cv2.imread(path)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

blurred = cv2.blur(gray, (9, 9))

_, thresh = cv2.threshold(blurred, 155, 255, cv2.THRESH_BINARY)

_, cnts, _ = cv2.findContours( thresh.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

c = sorted(cnts, key=cv2.contourArea, reverse=True)[0]

rect = cv2.minAreaRect(c)

#box即为最小外接矩形坐标

box = np.int0(cv2.boxPoints(rect))

cv2.drawContours(img, [box], -1, (0, 255, 0), 3)

cv2.imshow("Image", img)

cv2.imwrite("pic.jpg", img)

cv2.waitKey(0)

然而有时候我们需要的是最大内接矩形,获取效果如下:

从轮廓中所有坐标中获取其中4个坐标即可:

获取过程如下:

def order_points(pts):

# pts为轮廓坐标

# 列表中存储元素分别为左上角,右上角,右下角和左下角

rect

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值