Opencv(Python) 教程-轮廓(4)凹缺陷(凸缺陷)/点与轮廓关系/形状匹配
来源:互联网 发布:淘宝店快速提高信誉 编辑:程序博客网 时间:2024/04/29 13:41
凹缺陷/凸缺陷
前面我们已经学习了轮廓的凸包,对象上的任何凹陷都被成为凸缺陷。OpenCV 中有一个函数 cv.convexityDefect() 可以帮助我们找到凸缺陷。函数调用如下:
import cv2import numpy as npimg = cv2.imread('star.jpg')img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)ret, thresh = cv2.threshold(img_gray, 127, 255,0)contours,hierarchy = cv2.findContours(thresh,2,1)cnt = contours[0]hull = cv2.convexHull(cnt,returnPoints = False) ###返回凸包的点的坐标,returnPoints = False时反馈的坐标点在轮廓描述集合中点的编号,#returnPoints = True时反馈的坐标点位置。为了后面cv2.convexityDefects的使用,此处必须为Falsedefects = cv2.convexityDefects(cnt,hull) ##反馈的是Nx4的数组,第一列表示的是起点(轮廓集合中点的编号)、第二列表示的是终点(轮廓集合中点的编号)
##第三列表示的是最远点(轮廓集合中点的编号),第四列表示的是最远点到凸轮廓的最短距离for i in range(defects.shape[0]): s,e,f,d = defects[i,0] start = tuple(cnt[s][0]) end = tuple(cnt[e][0]) far = tuple(cnt[f][0]) cv2.line(img,start,end,[0,255,0],2) cv2.circle(img,far,5,[0,0,255],-1)cv2.imshow('img',img)cv2.waitKey(0)cv2.destroyAllWindows()点与轮廓关系
求解图像中的一个点到一个对象轮廓的最短距离。如果点在轮廓的外部,返回值为负。如果在轮廓上,返回值为 0。如果在轮廓内部,返回值为正。
下面我们以点(50,50)为例:
dist = cv2.pointPolygonTest(cnt,(50,50),True)此函数的第三个参数是 measureDist。如果设置为 True,就会计算最短距离。如果是 False,只会判断这个点与轮廓之间的位置关系(返回值为+1,-1,0)。形状匹配
函数 cv2.matchShape() 可以帮我们比较两个形状或轮廓的相似度。如果返回值越小,匹配越好。它是根据 Hu 矩来计算的。文档中对不同的方法都有解释。
import cv2import numpy as npimg1 = cv2.imread('star.jpg',0)img2 = cv2.imread('star2.jpg',0)ret, thresh = cv2.threshold(img1, 127, 255,0)ret, thresh2 = cv2.threshold(img2, 127, 255,0)contours,hierarchy = cv2.findContours(thresh,2,1)cnt1 = contours[0]contours,hierarchy = cv2.findContours(thresh2,2,1)cnt2 = contours[0]ret = cv2.matchShapes(cnt1,cnt2,1,0.0)print ret
阅读全文
0 0
- Opencv(Python) 教程-轮廓(4)凹缺陷(凸缺陷)/点与轮廓关系/形状匹配
- Opencv(Python) 教程-轮廓(2)轮廓特征求取
- Opencv(Python) 教程-轮廓(3)轮廓的性质
- opencv 轮廓的凸包,凸缺陷
- opencv 轮廓的凸包,凸缺陷
- opencv 轮廓的凸包,凸缺陷
- OpenCV-Python教程(11、轮廓检测)
- OpenCV-Python教程(11、轮廓检测)
- OpenCV-Python教程(11、轮廓检测)
- Opencv(Python) 教程-轮廓(1)查找与绘制轮廓
- OpenCv轮廓高级应用(轮廓匹配,几何直方图)
- opencv轮廓高级应用(轮廓匹配,几何直方图)
- opencv轮廓高级应用(轮廓匹配,几何直方图)
- OpenCv轮廓高级应用(轮廓匹配,几何直方图)
- opencv轮廓高级应用(轮廓匹配,几何直方图)
- Opencv学习笔记--使用convexityDefects计算轮廓凸缺陷
- 【OpenCV学习笔记】二十五、轮廓查找与绘制(二)访问轮廓中每个点
- 图像轮廓缺陷修补
- 使用 git 把远程仓库(github/码云)的代码拉到本地进行开发
- sql中in,exists的用法与区别
- MyBatis别名和settings设置
- Java程序员必须掌握的8大排序算法
- POI创建Excel并下载
- Opencv(Python) 教程-轮廓(4)凹缺陷(凸缺陷)/点与轮廓关系/形状匹配
- 《Android-查看手机内CPU手机型号设备信息等以及adb常用命令》---记录几个命令
- 大数阶乘
- 电脑显示有网但却连不上网
- Android通知栏介绍与适配总结
- unity 加密、防止反编译、mono编译
- 编译OpenCV3+扩展包+Python2.7
- Dubbo启动时检查依赖
- TS流PAT/PMT详解