# 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()
python cv2 hsv去除某种颜色
最新推荐文章于 2024-05-18 15:10:20 发布