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)!