栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

基于HSV颜色空间的目标选取《python图像处理篇》

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于HSV颜色空间的目标选取《python图像处理篇》

引言:当我们在选取颜色特征作为目标筛选的第一个条件时,我们经常使用空间转换,即将将RGB图像转换到HSV空间中,具体为什么?(小编目前还没能够理解!如果你们有知道的,请告诉小编,万分感谢!!!)我现在只能说是约定俗成这个表达。HSV颜色空间如图所示。(来自百度,好像侵权了,在此声明一下)

 HSV颜色空间

        首先小琼先说一下接下来的大体流程与思路:首先是图像读取、将RGB图像转换到HSV空间,生成掩码图像(此部分就是已提取到的颜色图像,也就是在图像中你所指定颜色的那部分,注意此时得到的是二值化图像)然后将得到的图像进行形态学处理,取出干扰噪点(此部分相当于是图像的优化、美化),最后利用面积大小筛选出目标图像,去除难以消除的干扰的噪点,最后和原图像进行与运算,致此结束(大体思路明白了吗?爱学习的小伙伴梦!!!)。

1.首先读取源图像:(首先应该是函数库导入,草率了)

代码:

import cv2
import numpy as np


img = cv2.imread('./cat1.png')
cv2.imshow('img', img)

效果展示:

 原图像

2.然后是空间转化。

代码:

l_g= np.array([35, 43, 46])
u_g = np.array([77, 255, 255])


hsvimg = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)#将RGB转换到HSV色域空间
cv2.imshow('hsvimg', hsvimg)

效果展示:

 HSV色域空间下的图像

 3.然后就是掩码生成。

代码:

mask = cv2.inRange(hsvimg, l_g, u_g) 
cv2.imshow('mas', mask)

效果展示:

HSV色域空间图像掩码 

因为在此处虽然提取到了目标图像,但是干扰的噪声较多,所以必须去除。 

4.形态学处理。

代码:

kernel=(5,5)
kernel1=(3,3)
kernel2=(7,7)

mask=cv2.dilate(mask,kern,iterations=1) #腐蚀
cv2.imshow('M', mask)

opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN,kern,iterations=2)
cv2.imshow('opening', opening)

效果展示:

M 图像

 opening图像

在此因为小琼只想去除噪声,所以采用腐蚀和开运算处理。

5.消去小面积区域:

代码:

for contour in contours:
    area = cv2.contourArea(contour)
    if area <=500:
        cv_contours.append(contour)
    else:
        pass

展示效果:

消去小面积区域 

6.与原图像与运算。

代码:

res = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow('Result', res)

显示效果:

 成功提取到草坪

是不是草率了,还以为小琼提取猫!!!O(∩_∩)O哈哈~(自己尝试)

7.结束:

GAME OVER

如果理解错误,欢迎大家批评,及时纠正小琼的错误哦,真心感谢你的纠正!!!

如果小伙伴梦有疑问欢迎在评论区留言哦!!!

如果感觉不错的话!点个赞呗,不用客气!(O(∩_∩)O哈哈~)

欢迎和小伙伴梦一起学习,共同努力,加油!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/313644.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号