基于Canny边缘检测和轮廓检测

这段代码实现了基于Canny边缘检测和轮廓检测,从图像中筛选出面积较大的矩形,并使用OpenCV和Matplotlib显示结果。主要流程如下:

步骤详解:

  1. 读取图像

    python 复制代码
    img = cv2.imread('U:/1.png')

    使用cv2.imread()加载图像。

  2. 转换为灰度图像

    python 复制代码
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    使用cv2.cvtColor()将图像从BGR色彩空间转换为灰度图,以便后续处理。

  3. 边缘检测

    python 复制代码
    edges = cv2.Canny(gray, 50, 150)

    使用cv2.Canny()进行Canny边缘检测,检测图像中的边缘。

  4. 轮廓检测

    python 复制代码
    contours, hierarchy = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

    使用cv2.findContours()检测图像中的轮廓。参数cv2.RETR_LIST用于提取所有轮廓,而cv2.CHAIN_APPROX_SIMPLE用于减少轮廓的点数(仅保留直线的端点)。

  5. 筛选矩形

    python 复制代码
    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 > min_area:
                cv2.drawContours(img, [approx], 0, (0, 255, 0), 3)
    • 对每个轮廓进行多边形近似,使用cv2.approxPolyDP()方法。
    • 判断是否为矩形(即有4个顶点)。
    • 计算轮廓面积并筛选出面积较大的矩形(面积大于设定的min_area阈值)。
    • cv2.drawContours()绘制矩形轮廓,使用绿色((0, 255, 0))并设定线宽为3。
  6. 显示结果

    python 复制代码
    img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    fig, axes = plt.subplots(1, 2, figsize=(12, 6))
    axes[0].imshow(edges, cmap='gray')
    axes[0].set_title("Edges Detected")
    axes[0].axis('off')
    
    axes[1].imshow(img_rgb)
    axes[1].set_title("Rectangles Detected")
    axes[1].axis('off')
    
    plt.show()
    • 将最终结果(BGR图像)转换为RGB图像,以便正确显示。
    • 使用Matplotlib创建一个1行2列的子图,左图显示边缘检测结果,右图显示带有矩形框的原始图像。
    • plt.show()用于展示结果。

效果:

  • 边缘检测图像:显示了图像中所有的边缘。
  • 带有矩形的最终图像:显示了通过轮廓检测与面积筛选出的矩形,矩形用绿色框标注。

优化建议:

  1. min_area 阈值 :你可以根据图像内容调整min_area的值,以过滤掉较小的噪声。
  2. 矩形的筛选条件:除了长宽比、面积等条件,你还可以进一步结合矩形的位置、形态等特征进行更精确的筛选。
  3. 图像预处理:有时在边缘检测前进行图像的平滑处理(如高斯模糊)可以减少噪声,提高检测效果。

该代码适用于需要从图像中提取矩形区域的场景,特别适用于图像中具有明显边缘和几何形状的对象。

相关推荐
张较瘦_17 分钟前
[论文阅读] 人工智能 | 用大语言模型抓虫:如何让网络协议实现与RFC规范对齐
论文阅读·人工智能·语言模型
qb_jiajia22 分钟前
微软认证考试科目众多?该如何选择?
人工智能·microsoft·微软·云计算
pen-ai36 分钟前
【统计方法】蒙特卡洛
人工智能·机器学习·概率论
说私域42 分钟前
基于开源AI智能名片链动2+1模式S2B2C商城小程序的生态农庄留存运营策略研究
人工智能·小程序·开源·零售
摘取一颗天上星️1 小时前
大模型微调技术全景图:从全量更新到参数高效适配
人工智能·深度学习·机器学习
要努力啊啊啊1 小时前
策略梯度核心:Advantage 与 GAE 原理详解
论文阅读·人工智能·深度学习·自然语言处理
AI航海家(Ethan)1 小时前
RAG技术解析:实现高精度大语言模型知识增强
人工智能·语言模型·自然语言处理
soldierluo1 小时前
AI基础知识(LLM、prompt、rag、embedding、rerank、mcp、agent、多模态)
人工智能·prompt·embedding
AWS官方合作商4 小时前
Amazon Augmented AI:人类智慧与AI协作,破解机器学习审核难题
人工智能·机器学习·aws
人工智能小豪10 小时前
2025年大模型平台落地实践研究报告|附75页PDF文件下载
大数据·人工智能·transformer·anythingllm·ollama·大模型应用