时间:2021-05-23
在图像中,轮廓可以简单的理解为连接具有相同颜色的所有连续点(边界)的曲线,轮廓可用于形状分析和对象检测、识别等领域。
轮廓发现的原理:先通过阈值分割提取目标物体,再通过边缘检测提取目标物体轮廓。
一个轮廓就是一系列的点(像素),这些点构成了一个有序的点集合。
使用 cv2.findContours 函数可以用来检测图像的边缘。
我使用的 Python OpenCV 是 4.0 以上版本,如果你使用的是 3.0 以上,可能存在返回值差异问题。
参数说明如下:
备注:image 参数需要是二值图,而不是灰度图,返回结果是等高线和层次结构。
轮廓检索模式,有四种
轮廓逼近方法
了解上述内容之后,就可以应用轮廓发现函数了,代码如下:
import cv2 as cvsrc = cv.imread("./both.jpeg")gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)ret, thresh = cv.threshold(gray, 150, 255, 0)cv.imshow("thresh",thresh)# 寻找轮廓contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)轮廓发现之后,还要通过 cv2.drawContours 函数绘制轮廓,该函数原型如下:
image = cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]])参数说明如下:
测试代码与运行结果如下:
import cv2 as cv# help(cv.drawContours)src = cv.imread("./both.jpeg")gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)ret, thresh = cv.threshold(gray, 150, 255, 0)cv.imshow("thresh",thresh)# 寻找轮廓contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)# print(contours)# print(hierarchy)# 绘制轮廓cv.drawContours(src,contours,-1,(200,0,150),2)cv.imshow('src',src)cv.waitKey(0)到此这篇关于Python OpenCV 基于图像边缘提取的轮廓发现函数的文章就介绍到这了,更多相关OpenCV 边缘提取轮廓 内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
简介:轮廓发现是基于图像边缘提取的基础寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓发现结果。代码如下:importcv2ascvimportnump
最近在OpenCV-Python接口中使用cv2.findContours()函数来查找检测物体的轮廓。根据网上的教程,PythonOpenCV的轮廓提取函数会
本文实例为大家分享了Opencv处理图像之轮廓提取,使用cvfindContours对图像进行轮廓检测,供大家参考,具体内容如下#include#include
本文实例为大家分享了Opencv轮廓外背景颜色改变的具体代码,供大家参考,具体内容如下自行学习弄得简单代码,使用了图像中的轮廓发现以及提取,再绘制出来,改变轮廓
环境介绍Python3.6+OpenCV3.4.1.15原理介绍首先,提取出模板中每一个数字的轮廓,再对信用卡图像进行处理,提取其中的数字部分,将该部分数字与模