2-2(补充) opencv实战进阶系列 最大多边形识别

1、前言

书接上回,代码能够很好的把图像中的矩形都找出来,若我们只需要找到图像中最大的矩形,需要对上节的代码进行一些修改。

运行效果如下:

2、修改思路

在for遍历每个轮廓时,增加一个对轮廓面积的计算

area = cv2.contourArea(cnt)

然后将面积进行对比选出最大的轮廓:max_rect

python 复制代码
# 初始化变量来存储最大矩形的信息
max_area = 0
max_rect = None

for cnt in contours:
    approx = cv2.approxPolyDP(cnt, 0.01 * cv2.arcLength(cnt, True), True)
    if len(approx) == 4:
        # 计算轮廓的面积
        area = cv2.contourArea(cnt)
        if area > max_area:
            max_area = area
            max_rect = cnt

之后同上节内容一样,把轮廓以及相关文字显示出来

完整代码:

python 复制代码
import cv2

# 读取输入图像
img = cv2.imread('test4.png')

# 将图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 应用二值化将灰度图像转换为二进制图像
mask_gray = cv2.inRange(gray, 0, 251)

# 找到轮廓
contours, hierarchy = cv2.findContours(mask_gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
print("检测到的轮廓数量:", len(contours))

# 初始化变量来存储最大矩形的信息
max_area = 0
max_rect = None

for cnt in contours:
    approx = cv2.approxPolyDP(cnt, 0.01 * cv2.arcLength(cnt, True), True)
    if len(approx) == 4:
        # 计算轮廓的面积
        area = cv2.contourArea(cnt)
        if area > max_area:
            max_area = area
            max_rect = cnt

# 绘制最大的矩形
if max_rect is not None:
    img = cv2.drawContours(img, [max_rect], -1, (0, 170, 255), 3)

    # 计算矩形质心
    M = cv2.moments(max_rect)
    if M['m00'] != 0.0:
        x = int(M['m10'] / M['m00'])
        y = int(M['m01'] / M['m00'])
    cv2.putText(img, 'Largest Rectangle', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 0), 2)

cv2.imshow("mask_gray", mask_gray)
cv2.imshow("Shapes", img)

cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
档案宝档案管理3 分钟前
权限分级+加密存储+操作追溯,筑牢会计档案安全防线
大数据·网络·人工智能·安全·档案·档案管理
数据光子4 分钟前
【YOLO数据集】国内交通信号检测
人工智能·python·安全·yolo·目标检测·目标跟踪
霍格沃兹测试开发学社测试人社区9 分钟前
GitLab 测试用例:实现 Web 场景批量自动化执行的方法
人工智能·智能体
Mintopia10 分钟前
🤖 AI 应用自主决策的可行性 — 一场从逻辑电路到灵魂选择的奇妙旅程
人工智能·aigc·全栈
百***787510 分钟前
2026 优化版 GPT-5.2 国内稳定调用指南:API 中转实操与成本优化
开发语言·人工智能·python
:mnong12 分钟前
辅助学习神经网络
人工智能·神经网络·学习
jinyeyiqi202612 分钟前
城市噪声监测设备技术解析及智慧城市应用方案 金叶仪器全场景适配的城市噪声监测设备
人工智能·智慧城市
光锥智能13 分钟前
蚂蚁阿福月活用户已达3000万,OpenAI跟进发布ChatGPT Health
人工智能·chatgpt
空山新雨后、16 分钟前
Masked AutoEncoder(MAE)详解:高 Mask 率如何造就强视觉表征
人工智能·深度学习·chatgpt·多模态
韦东东16 分钟前
行业资讯日报自动化:从采集到 LLM 生成的全链路拆解(以政务网站为例)
运维·人工智能·自动化·大模型·llm·政务·行业资讯