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

opencv轮廓提取、轮廓识别相关要点

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1、轮廓提取

复制代码

1 src = cv2.imread("***.jpg", cv2.IMREAD_COLOR)
2 gray = cv2.cvtColor(src ,cv2.COLOR_BGR2GRAY)
3 ret, binary = cv2.threshold(gray,100,255,cv2.THRESH_BINARY)
4 contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
5 cv2.drawContours(src,contours[32],-1,(0,0,255),1)
6 cv2.imshow("Src", src)

复制代码

其中,threshold函数第2参数,确定黑白分界点。除此之外,还有canny等方法,形成二值图。

drawContours的轮廓参数,可以是整个轮廓,也可是其中一个。

函数原型:

cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst

type:THRESH_BINARY, THRESH_BINARY_INV, THRESH_TRUNC, THRESH_TOZERO, THRESH_TOZERO_INV

cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) → contours, hierarchy

mode:CV_RETR_EXTERNALCV_RETR_LIST, CV_RETR_CCOMP, CV_RETR_TREE

method:CV_CHAIN_APPROX_NONE, CV_CHAIN_APPROX_SIMPLE, CV_CHAIN_APPROX_TC89_L1, CV_CHAIN_APPROX_TC89_KCOS

contours:轮廓多边形点群数据

hierarchy:

? hierarchy[idx][0] 返回同等级层次结构的下一个轮廓索引
? hierarchy[idx][1] 返回同等级层次结构的上一个轮廓索引
? hierarchy[idx][2] 返回第一个子轮廓的索引
? hierarchy[idx][3] 返回父轮廓的索引
如果其中一个轮廓不存在,返回索引为负值

cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]]) → None

2、轮廓对比

(1)轮廓矩对比

1 cv2.matchShapes(contours1[0], contours2[0], cv2.cv.CV_CONTOURS_MATCH_I1, 0.0)

函数原型:

cv2.matchShapes(contour1, contour2, method, parameter) → retval

method:CV_CONTOURS_MATCH_I1, CV_CONTOURS_MATCH_I2, CV_CONTOURS_MATCH_I3

(2)轮廓hist对比

1 hist1 = cv2.calcHist(src1, [0], None, [256], [0, 256])
2 hist2 = cv2.calcHist(src2, [0], None, [256], [0, 256])
3 print cv2.compareHist(hist1, hist2, cv2.cv.CV_COMP_BHATTACHARYYA)

函数原型:

cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]]) → hist

cv2.compareHist(H1, H2, method) → retval

转载于:https://my.oschina.net/u/1426828/blog/863696

相关文章:

  • yii2: oracle汉字占用字节长度
  • jquery easy ui 验证框架
  • java生成验证码并可刷新
  • JS三大经典变量命名法
  • 数字基础(Digital Fundamentals)中的truth table转化成表达式
  • 为你解惑之WPF经典9问详解
  • 输入一个整数,将这个整数以字符串的形式逆序输出 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001...
  • MSER
  • 你知道第一个 C 语言编译器是如何编写的吗?
  • Haproxy的三种保持客户端会话保持方式
  • 每天一个linux命令(5):rm命令
  • linux调优-TIME_WAIT
  • TypeScript迭代器
  • thinkphp如何省略index.php
  • 安卓开源项目周报0329
  • 网络传输文件的问题
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • Brief introduction of how to 'Call, Apply and Bind'
  • canvas 高仿 Apple Watch 表盘
  • Cookie 在前端中的实践
  • Date型的使用
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Laravel核心解读--Facades
  • Python打包系统简单入门
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • yii2中session跨域名的问题
  • 成为一名优秀的Developer的书单
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 入门级的git使用指北
  • 使用API自动生成工具优化前端工作流
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 阿里云ACE认证之理解CDN技术
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​secrets --- 生成管理密码的安全随机数​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #13 yum、编译安装与sed命令的使用
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm高校实验室 毕业设计 800008
  • (接口自动化)Python3操作MySQL数据库
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (原)本想说脏话,奈何已放下
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转载)Linux网络编程入门
  • .FileZilla的使用和主动模式被动模式介绍
  • .net core 源码_ASP.NET Core之Identity源码学习