opencv轮廓提取、轮廓识别相关要点
2017-03-21 00:00
651 查看
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, [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)轮廓矩对比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
相关文章推荐
- opencv轮廓提取、轮廓识别相关要点
- 急求!vs10+opencv,如何在一张二值图中找出二维码的轮廓并提取出来然后进行识别啊?!
- 使用Opencv进行轮廓检测,字符提取,简单的直方图字符识别!
- OPENNI学习实践-利用openni和opencv提取人的轮廓
- openCV学习之提取外轮廓
- opencv学习(四)轮廓识别
- opencv提取直线、轮廓及ROI的描述方法
- 【OpenCV学习笔记 010】提取直线、轮廓及连通区域
- opencv学习笔记12 图像轮廓的提取和绘制
- OpenCV2马拉松第24圈——轮廓提取
- 【OpenCV】直线、轮廓的提取与描述
- OpenCV中findContours轮廓提取一个边缘只对应的一个轮廓
- OpenCV轮廓、边缘、边界的相关函数cv::findContours()等
- 【OpenCV学习笔记】三十一、轮廓特征属性及应用(八)——颜色物体识别与跟踪
- OpenCV 轮廓相关
- OpenCV成长之路(8):直线、轮廓的提取与描述
- opencv轮廓识别
- OPENCV轮廓提取findContours和drawContours
- OpenCV仪表数据识别(五):数字分割提取
- OpenCV成长之路(8):直线、轮廓的提取与描述