opencv轮廓检测

轮廓检测

cv2.findContours(img,mode,method)

img:输入需要检测的二值化图片(先转化为灰度图片,再转化为二值化)

mode:检测模式,我们一般都是采用 RETR_TREE ,检测所有轮廓信息的模式

method:轮廓逼近的方法:一般使用 CHAIN_APPROX_NONE.。

步骤一(图片二值化):

img=cv2.imread(‘路径’)

gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

ret,thresh=cv2.threshold(gray,127,255,cv2.THRESH_BINARY) #thresh是返回的二值化图片,127是像素的阈值,低于127全部变为0 ,高于127全部变为255,具体看二值化操作)

步骤二(轮廓绘制):

import cv2
## 轮廓绘制
img=cv2.imread('1.jpg')
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,thresh=cv2.threshold(gray,127,255,cv2.THRESH_BINARY)  #thresh是返回的二值化图片,127是像素的阈值,低于127全部变为0 ,高于127全部变为255,具体看二值化操作)
contours,htt=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE) #返回三个值,其中contours是返回轮廓本身
img2=img.copy() #需要复制一下图片,生成副本!否则再后续的轮廓绘制中,会改变原图
res=cv2.drawContours(img2,contours,-1,(0,0,255),1)#绘制轮廓,先传入原始图片,再传入轮廓信息,-1表示绘制所有轮廓,()是绘制曲线的颜色,1表示绘制曲线的宽度,最终返回绘制效果
cv2.imshow('d',res)
cv2.waitKey(0)
cv2.destroyAllWindows()

你可能感兴趣的:(机器学习,opencv学习笔记,opencv,计算机视觉,python)