opencv轮廓提取、轮廓识别相关要点
1、轮廓提取
src = cv2.imread("***.jpg", cv2.IMREAD_COLOR)
gray = cv2.cvtColor(src ,cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray,,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, THRESH_BINARY_INV, THRESH_TRUNC, THRESH_TOZERO, THRESH_TOZERO_INV
cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) → contours, hierarchy
mode:CV_RETR_EXTERNAL, CV_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)轮廓矩对比
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
最新文章
- Zephyr OS 简介
- 【PRINCE2是什么】PRINCE2认证之七大原则(3)
- MongoDB创建数据库和集合命令db.createCollection详解(转)
- JS 节流
- vim替换命令
- JDBC之数据库操作
- 自己写的一个分页控件类(WinForm)
- 【转】android adb命令
- Mysql连表查询
- 动态规划——Split Array Largest Sum
- HUAWEI USG6000系列 &; NGFW Module V100R001 典型配置案例
- Codeforces Round #517 体验记
- Mybatis 中实体类的编写
- 怎么将unbuntu Linux iOS 文件从U盘或者移动硬盘启动?用win32diskimager_cn
- 011-Shell 文件包含
- UIWebView和WKWebView的使用及js交互
- Java学习之SpringBoot整合SSM Demo
- cms-帖子内容实现2
- 跳转appStore评分
- bzoj 1731 [Usaco2005 dec]Layout 排队布局——差分约束
热门文章
- IOS7开发~错误收集
- Exception:System.Threading.SemaphoreFullException
- (原创)linux安装xgboost快速高效方法
- TensorFlow笔记三:从Minist数据集出发 两种经典训练方法
- UVA1406 - A Sequence of Numbers(树状数组)
- curl库pycurl实例及参数详解
- Runtime.getRuntime().exec()----记录日志案例
- Gson把对象转成json格式的字符串
- js关闭浏览器事件,js关闭浏览器提示及相关函数
- 【Unity3D】【NGUI】Atlas的动态创建