当前位置: 首页 > news >正文

Chapter 8 Contour / Shape Detection

def getContours(img):contours, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)for cnt in contours:area = cv2.contourArea(cnt)print(area)if area > 500:# -1 代表所有的轮廓cv2.drawContours(imgContours, cnt, -1, (255, 0, 0), 3)# 找到轮廓的长度peri = cv2.arcLength(cnt, True)print(peri)# 会给出corner的坐标,polygonal是多边形approx = cv2.approxPolyDP(cnt, 0.02 * peri, True)# 3就是三角形、4是矩形,超过4就是圆形了print(len(approx))objCor = len(approx)# 置信框x,y,w,h = cv2.boundingRect(approx)if objCor == 3:ObjectType = "Tri"elif objCor == 4:aspRatio = w / float(h)if aspRatio > 0.95 and aspRatio < 1.1:ObjectType = "Square"else:ObjectType = "Rectangle"elif objCor >= 4:ObjectType = "Circle"else:ObjectType = "None"# 对角线,经常使用绿色的置信框,知道中心点cv2.rectangle(imgContours, (x, y), (x + w, y + h), (0, 255, 0), 2)cv2.putText(imgContours, ObjectType, (x + (w//2)-10, y + (h//2)-10),cv2.FONT_HERSHEY_PLAIN, 1, (0, 0, 0),  2)img = cv2.imread('images/shapes.png')
imgContours = img.copy()imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
imgBlur = cv2.GaussianBlur(imgGray, (5, 5), 0)
imgCanny = cv2.Canny(imgBlur, 50, 50)
# 通过检测出来的边缘就可以去找轮廓的特征了
getContours(imgCanny)imgBlank = np.zeros_like(img)
imgStack = stackImages(0.8, ([img, imgGray, imgBlur],[imgCanny, imgContours, imgBlank]))
cv2.imshow('stack', imgStack)

image

 

http://www.zskr.cn/news/9201.html

相关文章:

  • 【左程云算法笔记016】双端队列-双链表和固定数组实现 - 教程
  • 2025年运营商API安全建设最佳实践:某头部省级电信案例解析与方案推荐
  • 面向对象入门2与类的识别
  • 板子大全
  • 通过人大金仓数据库的逻辑备份与还原功能实现数据迁移
  • 完整教程:GS1-128(EAN-128)编码构造方式
  • 第十二节:订单普通下单、支付回调、退款、退款回调详解
  • Chapter 7 Color Detection
  • PyQt数字转大写金额GUI程序开发及财务规范实现
  • 从零开始训练推理模型:GRPO+Unsloth改造Qwen实战指南
  • 爱锋拍照工具 - 隐私政策
  • 周计划+总结
  • C#通讯之网络通讯 TCP UDP - 详解
  • 第03周 面向对象入门2与类的识别
  • 完整教程:启用GPU对模型进行推理,安装cuda toolkit cuDNN 9
  • 25秋周总结3
  • 不会的好题总结
  • 详细介绍:体验感满满—万物皆可插入
  • 支付宝的对账单下载
  • ABC 424 D-F 题解
  • 探索 CSS 过渡:打造流畅网页交互体验 - 教程
  • 详细介绍:项目首次推送到GitHub、指令步骤(下)
  • 安卓免费词典,查字查词机制超全
  • 计算多项式的值
  • 安装windows11跳过账户登录
  • AudioRelay —— 让电脑使用手机的麦克风和扬声器
  • 【小白学算法】矩阵快速幂超详细解析+例题[HDU - 2802]
  • go语言数组的方法
  • 【C++】类与结构体的区别
  • Linux云端服务器上部署Spring Boot应用