新手入门,大佬球放过。
话不多直接上代码!!
opencv中获取图形的轮廓:
1.首先要进行灰度图转换:
功能:函数cvtColor实现色彩空间转换。调用resize函数,重新设定图片大小,提高运行效率;
2.然后将图片二值化
函数原型:ret, thresh = cv.threshold(src, thresh, maxval, type)
参数1:src——输入图像
参数2:thresh——阈值
参数3:maxval——由参数4决定
参数4:type——阈值处理模式选择
阈值处理模式大概有以下几种:
3.获取轮廓信息并画出轮廓
寻找轮廓——findContours函数原型:findContours(image, mode, method)
参数1:输入图像
参数2:轮廓的检索模式,主要有以下4种:
参数3:轮廓的近似办法,常用的有以下2种:
画出轮廓——drawContours函数原型:drawContours(image, contours, contourldx, color, thickness)
参数1:image:需要画出轮廓的图像
参数2:contours:输入的所有轮廓(每个轮廓以点集的方式存储)
参数3:contourldx:画第几个轮廓,常用-1,画出全部轮廓
参数4:color:画出轮廓线条的颜色
参数5:thickness:画出轮廓线条的粗细
4.全部代码:
# 读取原图
Src = cv.imread("D:/jiqi/photos/2.bmp")
Src = cv.resize(Src, (600, 500))
cv.imshow("Src", Src)
# 转为灰度图
dst = cv.cvtColor(Src, cv.COLOR_BGR2GRAY)
# cv.imshow("input", Src)
# 阈值处理(二值处理)
ret, thresh = cv.threshold(dst, 127, 255, cv.THRESH_BINARY)
# cv.imshow("thresh", thresh)
# 获取轮廓信息
contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_NONE)
result = cv.drawContours(Src, contours, -1, (0, 0, 255), 2)
cv.imshow("result", result)
5.结果输出: