完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
以下是一个简单的OpenCV矩形检测代码示例,其中包括了Canny边缘检测和approxPolyDP多边形拟合的步骤:
python复制代码import cv2 import numpy as np # 读取图像 img = cv2.imread('image.jpg') # 转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Canny边缘检测 edges = cv2.Canny(gray, 50, 150) # 查找轮廓 contours, _ = cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 遍历每个轮廓,进行approxPolyDP多边形拟合和矩形检测 for contour in contours: # 多边形拟合 epsilon = 0.1 * cv2.arcLength(contour, True) approx = cv2.approxPolyDP(contour, epsilon, True) # 计算多边形中心和宽高比 (h, w) = img.shape[:2] center = (w // 2, h // 2) aspect_ratio = float(w) / h # 判断是否为矩形 if len(approx) == 4 and (aspect_ratio < 0.5 or aspect_ratio > 2): # 四边形的顶点,按照顺时针方向进行编号 rect = approx.reshape(-1, 2, order='C') if cv2.contourArea(rect) > 1000: # 判断面积是否足够大 x, y, w, h = cv2.boundingRect(rect) # 获取矩形的位置和大小 cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) # 在原图上画出矩形框
在这个示例中,我们首先读取了一张图像,并将其转换为灰度图像。然后使用Canny边缘检测算子提取图像中的边缘。接下来,我们使用findContours函数查找图像中的轮廓,并遍历每个轮廓进行多边形拟合和矩形检测。在多边形拟合时,我们使用approxPolyDP函数计算近似的多边形点集。在矩形检测时,我们计算多边形的中心和宽高比,并根据经验和先验知识判断是否为矩形。如果是矩形,则使用cv2.rectangle函数在原图上画出矩形框。
发布
求助论坛内各位大佬给准实习生出出招
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
PWM停止输出,什么原因会导致这种现象发生?
1306 浏览 2 评论
ESP32-S3 工具链+环境配置的最终步骤清单
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16902 浏览 31 评论
电子发烧友网
电子发烧友论坛
查看 »
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 12:59 , Processed in 0.582239 second(s), Total 43, Slave 32 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com