1、输入图片
2、识别颜色转换HSV颜色空间
3、识别颜色范围,用inrange找到范围
4、进行滤波
5、形态学变换,先腐蚀后膨胀
6、寻找轮廓
用两个参数接收cv2.findContours(img_change1,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
7、for循环遍历所有轮廓
8、通过面积筛选你要的轮廓cv2.contourArea()然后绘制轮廓
9、输出图片
代码:import cv2
import numpy as np
img=cv2.imread('./color_1.png')
img=cv2.resize(img,(0,0),fx=0.8,fy=0.8)
img_hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
hsv_min=np.array([26,43,46])
hsv_max=np.array([34,255,255])
img_color=cv2.inRange(img_hsv,hsv_min,hsv_max)
img_median_blur=cv2.medianBlur(img_color,5)
kernal=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,
(9,9))
img_change=cv2.erode(img_median_blur,kernal)
img_change1=cv2.dilate(img_change,kernal)
contours,_=cv2.findContours(img_change1,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
img_copy=img.copy()
for i in contours:
if cv2.contourArea(i)<200 or cv2.contourArea(i)>200000000000000:
continue
cv2.drawContours(img_copy,[i],-1,(0,0,255),2)
cv2.imshow('image',img)
cv2.imshow('img_copy',img_copy)
cv2.waitKey(0)