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

Python Opencv实践 - 轮廓检测

import cv2 as cv
import numpy as np
import matplotlib.pyplot as pltimg = cv.imread("../SampleImages/map.jpg")
print(img.shape)
plt.imshow(img[:,:,::-1])#Canny边缘检测
edges = cv.Canny(img, 127, 255, 0)
plt.imshow(edges, cmap=plt.cm.gray)#查找轮廓
#cv.findContours(image, mode, method[, contours[, hierarchy[, offset ]]])
#image: 原图
#mode: 轮廓模式
#    cv2.RETR_EXTERNAL表示只检测外轮廓
#    cv2.RETR_LIST检测的轮廓不建立等级关系
#    cv2.RETR_CCOMP建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。
#    cv2.RETR_TREE建立一个等级树结构的轮廓。
#method: 轮廓的近似方法
#    cv2.CHAIN_APPROX_NONE存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1
#    cv2.CHAIN_APPROX_SIMPLE压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息
#    cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法
#返回值: opencv2返回两个值:contours:hierarchy。注:opencv3会返回三个值,分别是img, countours, hierarchy
#参考资料:https://blog.csdn.net/leemboy/article/details/84932885
contours,hierachy = cv.findContours(edges, cv.RETR_TREE, cv.CHAIN_APPROX_NONE)#绘制轮廓
#cv.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset ]]]]]) 
#image:原图
#contours: 轮廓数据
#contouridx:要绘制的轮廓的index,如果是-1,表示绘制所有轮廓。
#color,thickness,lineType: 轮廓线条颜色,厚度和线的类型
img = cv.drawContours(img, contours, -1, (0,255,0), 2)plt.imshow(img[:,:,::-1])

 

 

http://www.lryc.cn/news/157386.html

相关文章:

  • c#保留两位小数
  • [machineLearning]非监督学习unsupervised learning
  • C语言深入理解指针(非常详细)(四)
  • 知识库建设:从0到1搞定知识库建设的方法论分享
  • SpringBoot+Vue 的留守儿童系统的研究与实现,2.0 版本,附数据库、教程
  • 28.考试
  • 浏览器窗口间的通信
  • MATLAB 的 plot 绘图
  • SpringBoot项目--电脑商城【获取省市区列表】
  • 使用git把本地项目关联远程代码仓库,并推送到远程仓库
  • Spring+MyBatis使用collection标签的两种使用方法
  • k8s集群中集群方式安装nacos
  • 极客时间:数据结构与算法之美【学习笔记+思考实践】
  • 基于视觉重定位的室内AR导航项目思路(2):改进的建图和定位分离的项目思路
  • nodejs+vue+elementui精品课程网站设计
  • 40个Linux常用命令组合
  • NIFI关于Variables的使用
  • 2、VRP基础
  • docker容器运行成功但无法访问,原因分析及对应解决方案(最新,以Tomcat为例,亲测有效)
  • 第15章 秒杀商品隔离解决方案
  • 2023-08-31力扣每日一题-姜汁水题
  • 五大优化技巧,让你的视频直播app源码更加流畅
  • Weblogic10中常用Linux指令
  • OpenAI 函数调用教程
  • Spark有两种常见的提交方式:client 模式和 cluster 模式对机器 CPU 的影响
  • HarmonyOS/OpenHarmony(Stage模型)应用开发单一手势(三)
  • Git的安装以及基础使用方法
  • 用通俗易懂的方式讲解大模型分布式训练并行技术:数据并行
  • Shopify电子邮件营销方法?邮件营销的技巧?
  • SpringCloud 初识