欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > OpenCV识别图片颜色并绘制轮廓

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

2025/2/23 7:09:37 来源:https://blog.csdn.net/m0_67609958/article/details/144434953  浏览:    关键词:OpenCV识别图片颜色并绘制轮廓

现象:识别黄色图片并把黄色图片的轮廓绘制一下

原理:

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#1、输入图片
img=cv2.imread('./color_1.png')
img=cv2.resize(img,(0,0),fx=0.8,fy=0.8)
#2、识别颜色转换HSV颜色空间
img_hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
#3、识别颜色范围,用inrange找到范围
hsv_min=np.array([26,43,46])
hsv_max=np.array([34,255,255])
img_color=cv2.inRange(img_hsv,hsv_min,hsv_max)#4、进行滤波
img_median_blur=cv2.medianBlur(img_color,5)#5、形态学变化—-开运算,先腐蚀后膨胀
kernal=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,#指定形状 矩形 椭圆 十字形(9,9))
img_change=cv2.erode(img_median_blur,kernal)
img_change1=cv2.dilate(img_change,kernal)#6、寻找轮廓
contours,_=cv2.findContours(img_change1,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)#7、for循环遍历所有轮廓
#通过面积筛选你想要的轮廓cv2.contourArea()
#绘制轮廓
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)#8、输出图片
cv2.imshow('image',img)
cv2.imshow('img_copy',img_copy)
cv2.waitKey(0)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词