python opencv提取指定颜色区域及图像腐蚀、膨胀简单介绍

以提取红色区域为例,红色有两个区域范围,HSV基本颜色分量范围参考博客:【OpenCV】HSV颜色识别-HSV基本颜色分量范围

原图为:
                      在这里插入图片描述

import cv2
import numpy as np

img = cv2.imread('/home/yasin//book.png')

# range of red
lower_red = np.array([160, 60, 60])
upper_red = np.array([180, 255, 255])

lower_red2 = np.array([0, 60, 60])
upper_red2 = np.array([10, 255, 255])  # thers is two ranges of red

# range of yellow
# lower_yellow = np.array([10,100,100])
# upper_yellow = np.array([45,255,255])

# range of grenn
# lower_yellow = np.array([36,25,25])
# upper_yellow = np.array([70,255,255])

# change to hsv model
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

mask_r = cv2.inRange(hsv, lower_red, upper_red)

mask_r2 = cv2.inRange(hsv, lower_red2, upper_red2)

mask = mask_r + mask_r2

cv2.namedWindow('Mask', 0)
cv2.imshow('Mask', mask)
cv2.waitKey()

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))
mask = cv2.dilate(mask, kernel)

cv2.namedWindow('Mask_dilate', 0)
cv2.imshow('Mask_dilate', mask)
cv2.waitKey()

# 将mask于原视频帧进行按位与操作,则会把mask中的白色用真实的图像替换:
res = cv2.bitwise_and(img, img, mask=mask)

cv2.namedWindow('res', 0)
cv2.imshow('res', res)
cv2.waitKey()


mask结果为:
                                                                         在这里插入图片描述
膨胀结果为:
                                                                         在这里插入图片描述
提取红色区域结果为:
                                                                         在这里插入图片描述

关于腐蚀核膨胀

参考来自:https://blog.csdn.net/u012851419/article/details/78026596
1.腐蚀
在这里插入图片描述
2.膨胀
在这里插入图片描述

关于图像开运算和闭运算

参考来自:https://blog.csdn.net/hanshanbuleng/article/details/80657148

1.开运算
开运算 = 先腐蚀运算,再膨胀运算(看上去把细微连在一起的两块目标分开了)
开运算的效果图如下图所示:
在这里插入图片描述
开运算总结:
(1)开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。
(2)开运算是一个基于几何运算的滤波器。
(3)结构元素大小的不同将导致滤波效果的不同。
(4)不同的结构元素的选择导致了不同的分割,即提取出不同的特征。

2.闭运算
闭运算 = 先膨胀运算,再腐蚀运算(看上去将两个细微连接的图块封闭在一起)
闭运算的效果图如下图所示:
在这里插入图片描述闭运算总结:
(1)闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。
(2)闭运算是通过填充图像的凹角来滤波图像的。
(3)结构元素大小的不同将导致滤波效果的不同。
(4)不同结构元素的选择导致了不同的分割。

  • 18
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南洲.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值