opencv轮廓提取、轮廓识别相关要点
2015-10-11 13:31
267 查看
1、轮廓提取
src = cv2.imread("***.jpg", cv2.IMREAD_COLOR) gray = cv2.cvtColor(src ,cv2.COLOR_BGR2GRAY) ret, binary = cv2.threshold(gray,100,255,cv2.THRESH_BINARY) contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(src,contours[32],-1,(0,0,255),1) cv2.imshow("Src", src)
其中,threshold函数第2参数,确定黑白分界点。除此之外,还有canny等方法,形成二值图。
drawContours的轮廓参数,可以是整个轮廓,也可是其中一个。
函数原型:
cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst
type:THRESH_BINARY, [b]THRESH_BINARY_INV, [b]THRESH_TRUNC, [b]THRESH_TOZERO, [b]THRESH_TOZERO_INV[/b][/b][/b][/b]
cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) → contours, hierarchy
mode:CV_RETR_EXTERNAL, CV_RETR_LIST, [b]CV_RETR_CCOMP, [b]CV_RETR_TREE[/b][/b]
method:CV_CHAIN_APPROX_NONE, [b]CV_CHAIN_APPROX_SIMPLE, [b]CV_CHAIN_APPROX_TC89_L1, CV_CHAIN_APPROX_TC89_KCOS[/b][/b]
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)轮廓矩对比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对比
hist1 = cv2.calcHist(src1, [0], None, [256], [0, 256]) hist2 = cv2.calcHist(src2, [0], None, [256], [0, 256]) 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
相关文章推荐
- Linux下debian系统安装配置OpenCV并检测程序
- 【转】git bash here 右键菜单失效后的修复方法
- linux的文件系统与目录
- MVC中DropDownListFor赋初始选择值问题
- 第十章 Linux下RPM软件的安装与卸载
- 2台主机极致实现双主复制架构及MMM
- 浅析linux kernel段错误及调试手段
- 虚拟机安装centos7后无法联网
- mac 部署 apache
- LFI(本地文件包含)获取Webshell
- 舍本求末的运维自动化技术热潮
- LFI(本地文件包含)获取Webshell
- TomCat服务器搭建以及JavaWeb入门小
- 关于opensuse安装vmware
- PowerShell 异常处理(trap / try…catch / Throw / $Error / $ConfirmPreference)
- linux终端快捷键
- PHP计划任务:如何使用Linux的Crontab执行PHP脚本
- 服 务 器 时 间 设 置
- Linux安全性模型及权限详细
- Properties类的set,get方法