python cv2 hsv去除某种颜色

# coding=utf-8 
import cv2
import numpy as np
from matplotlib import pyplot as plt

def getpos(event,x,y,flags,param):
    if event==cv2.EVENT_LBUTTONDOWN:
        print(hsv[y,x])

#通过OpenCV读取图片信息
filename='4.jpg'
img = cv2.imread(filename)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
print(hsv)

def change(img, hsv, mask):
    rows,cols,channels = img.shape
    for r in range(rows):
        for c in range(cols):
            if mask[r, c] == 255:
                # hsv.itemset((r, c, 0), hsv.item(r, c, 0) -h)
                hsv.itemset((r, c, 1), 0)
                hsv.itemset((r, c, 2), 255)
# ————————————————
# 版权声明:本文为CSDN博主「星星-点灯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# 原文链接:https://blog.csdn.net/qq_34440409/article/details/120866761

# 提取hsv中H通道数据
# h = hsv[:, :, 0].ravel()
#
# plt.hist(h, 180, [0, 180])
# plt.show()

cv2.imshow("img", img)

# HSV 的下界限
lower_red = np.array([170,30,30])
lwhite=np.array([0,0,200])
# lgreen=np.array([33,44,44])
lgreen=np.array([11,44,44])
# HSV 的上界限
upper_red = np.array([180,255,255])
uwhite=np.array([180,30,255])
ugreen=np.array([77,255,255])

# 通过上下限提取范围内的掩模mask
mask = cv2.inRange(hsv, lower_red, upper_red)
maskugreen = cv2.inRange(hsv, lgreen, ugreen)
# maskugreennot=cv2.bitwise_not(maskugreen)
# imgmaskugreennotResult = cv2.bitwise_and(img,img,mask=maskugreennot)
maskwhite = cv2.inRange(hsv, lwhite, uwhite)
# maskwhitenot=cv2.bitwise_not(maskwhite)
# imgmaskwhitenotResult = cv2.bitwise_and(img,img,mask=maskwhitenot)

cv2.imshow("hsv", hsv)
# cv2.imshow("maskugreen", maskugreen)
cv2.setMouseCallback("hsv",getpos)
change(img, hsv, maskugreen)
change(img, hsv, maskwhite)
change(img, hsv, mask)
img2 = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
#将图像进行输出,使用show()也是可以显示的。
cv2.imshow("img2", img2)
cv2.imwrite(filename+'.jpg', img2)
# cv2.imshow("maskugreennot", maskugreennot)
# cv2.imshow("imgmaskugreennotResult", imgmaskugreennotResult)
# cv2.imshow("maskwhitenot", maskwhitenot)
# cv2.imshow("imgmaskwhitenotResult", imgmaskwhitenotResult)
cv2.waitKey(0)
cv2.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值