当前位置: 首页 > 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.hskmm.com/?act=detail&tid=12460

相关文章:

  • 【左程云算法笔记016】双端队列-双链表和固定数组实现 - 教程
  • java相关问题:面向对象入门2与类的识别
  • EXCEL自动调整列宽的快捷键
  • 【C++实战⑬】解锁C++文件操作:从基础到实战的进阶之路 - 实践
  • 破解塔吊顶升高危难题!让事故率降 50%、审批快 70%
  • logicFlow________文档2
  • CF2086D Even String
  • logicflow___文档3
  • 2025年运营商API安全建设最佳实践:某头部省级电信案例解析与方案推荐
  • 软件工程第二次作业-第一次个人编程作业
  • 面向对象入门2与类的识别
  • 202508_天山固网_to
  • jmeter分布式压测
  • 怎么屏蔽 ahref.com 上你不想看到的网站链接(垃圾外链)
  • 浅谈字典树
  • go-mapus为局域网地图协作而生
  • 《手搓动态顺序表:从数组到自动扩容的华丽转身》 - 详解
  • 板子大全
  • 通过人大金仓数据库的逻辑备份与还原功能实现数据迁移
  • 第十二节:订单普通下单、支付回调、退款、退款回调详解
  • 《原子习惯》-读书笔记7
  • 第3周预习作业
  • 《原子习惯》-读书笔记6
  • Java LTS版本进化秀:从8到21的欢乐升级之旅
  • 201912_EASER
  • 搜索百科(3):Elasticsearch — 搜索界的“流量明星”
  • 打印机漏洞、匿名协议与AWS安全:一周技术热点解析
  • 从零开始训练推理模型:GRPO+Unsloth改造Qwen实战指南
  • ALLinSSL,开源免费的SSL证书自动化管理平台
  • 《原子习惯》-读书笔记5