czxt3000 2023-12-26 15:24 采纳率: 73.4%
浏览 10
已结题

检测轮廓应该为矩形,缺角怎么补齐?

如图

img

如果用逼近的方法,不能补齐,反而会切掉。

img

能用什么方法补齐?

  • 写回答

12条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-12-26 15:25
    关注

    引自微信小程序:皆我百晓生

    import cv2
    import numpy as np
    
    # 读取图像
    image = cv2.imread('71.png')
    
    # 灰度图
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    _, binary = cv2.threshold(gray, 50, 255, cv2.THRESH_BINARY)
    
    # 查找轮廓
    contours, _ = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    
    # 最大轮廓
    max_area = 0
    max_contour = np.array([])
    for contour in contours:
        # 逼近轮廓以减少点的数量
        epsilon = 0.1 * cv2.arcLength(contour, True)
        approx = cv2.approxPolyDP(contour, epsilon, True)
        # 面积
        area = cv2.contourArea(approx)
    
        if area > max_area:
            max_area = area
            max_contour = approx
    
    # 补齐缺角
    hull = cv2.convexHull(max_contour)
    
    # 画轮廓
    cv2.drawContours(image, [hull], 0, (0, 0, 255), 3)
    
    # 显示结果
    cv2.imshow('image', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(11条)

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 已采纳回答 1月1日
  • 创建了问题 12月26日

悬赏问题

  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题