首页 > 分享 > OpenCV识别图片颜色并绘制轮廓

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

最新推荐文章于 2024-12-13 20:41:38 发布

Jiamusi_night 于 2024-12-12 20:35:01 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

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

原理:

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)

相关知识

利用OpenCV根据图片识别环境的亮度
深入浅出:利用OpenCV实现手写数字识别之旅
基于STM32的农业病虫害检测检测系统:OpenCV、MQTT、Flask框架、MySQL(代码示例)
基于机器视觉的昆虫种类及计数检测研究
基于机器视觉的害虫种类及计数检测研究
基于Python机器视觉的远程害虫种类识别和数量检测系统 报告+项目源码及数据
python 手写字识别
opencv
基于OpenCV的鲜花的图像分类系统详细设计与具体代码实现
opencv深度学习昆虫识别系统图像识别 python

网址: OpenCV识别图片颜色并绘制轮廓 https://m.huajiangbk.com/newsview1094041.html

所属分类:花卉
上一篇: 四川最出名的16道菜,麻辣鲜香,
下一篇: OpenCV实验篇:识别图片颜色