自学内容网 自学内容网

OpenCV 识别图片颜色并绘制轮廓

实验原理:

开运算 :就是先腐蚀后膨胀

寻找轮廓:从二值化的图片中寻找轮廓使用面积排查:求解遍历出来的每个轮廓的面积

实验代码:

import  cv2
import numpy as np



#输入图片
img = cv2.imread("./color_1.png")
img = cv2.resize(img,(0,0),fx =0.7,fy=0.7)

#识别颜色 转化hsv
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_blur = cv2.medianBlur(img_color,5)

#5 开运算
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5,))

img_erode = cv2.erode(img_blur,kernel)
img_open = cv2.dilate(img_blur,kernel)


#6、寻找轮廓
contours,_ = cv2.findContours(img_open,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

#7、for循环遍历所有轮廓
img_copy = img.copy()
for i in contours:
    #通过面积筛选你想要的轮廓
    if cv2.contourArea(i)<200 or cv2.contourArea(i)>200000:
        continue

# cv2.drawContours(img_copy,contours,-1,(0,0,255),2)
    cv2.drawContours(img_copy, [i], 0, (0, 0, 255), 2)



cv2.imshow("img",img)
cv2.imshow("img_copy",img_copy)
cv2.waitKey(0)

实现现象

可以通过修改

cv2.contourArea的范围来修改轮廓的数量

如图:


原文地址:https://blog.csdn.net/h1413517383/article/details/144435530

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!