美文网首页每周一赞
Python:颜色替换

Python:颜色替换

作者: 大龙10 | 来源:发表于2023-12-24 14:35 被阅读0次

一、消除黑点

  • 因为大部分黑点处于暗处,我们可以通过降低V值的下限来滤除掉,如V值下限由原来的50调整为15
  • 黑点已经无法通过V的调整来去除的时候,可以采用膨胀、腐蚀等手段来消除独立的白点或黑点。

二、颜色替换

  • 比如改成黄色,这个同样也是要在HSV颜色空间操作的。
  • 在这里使用createTrackbar函数对hsv进行进行调整
    cv2.createTrackbar(trackbarName, windowName, value, count, onChange)
    • trackbarName:可拖动条的名称,字符串类型。
    • windowName:可拖动条所在的窗口名称,字符串类型。
    • value:可拖动条的默认值,整型。
    • count:可拖动条的最大值,整型。
    • onChange:当可拖动条的值发生变化时调用的回调函数,函数类型。

三、程序

import cv2
import numpy as np

def nothing(x):
    pass
#通过OpenCV读取图片信息
img = cv2.imread("d:\\OpenCVpic\\happyfish.jpg")

img = cv2.resize(img,(500,500))
cv2.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.imshow("img", img)

# HSV 的下界限
lower_green = np.array([35,70,15])
# HSV 的上界限
upper_green = np.array([70,255,255])

cv2.namedWindow('img2',cv2.WINDOW_NORMAL)

cv2.createTrackbar('H','img2',140,180,nothing)
cv2.createTrackbar('S','img2',100,180,nothing)
cv2.createTrackbar('V','img2',117,180,nothing)
rows,cols,channels = img.shape

while(1):
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    mask = cv2.inRange(hsv, lower_green, upper_green)
    #将制定像素点的数据设置为0, 要注意的是这三个参数对应的值是Blue, Green, Red。
    h = cv2.getTrackbarPos('H', 'img2')
    s = cv2.getTrackbarPos('S', 'img2')
    v = cv2.getTrackbarPos('V', 'img2')
    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), hsv.item(r, c, 1) +90-s)
                hsv.itemset((r, c, 2), hsv.item(r, c, 2) +90-v)
    img2 = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
    #将图像进行输出,使用show()也是可以显示的。
    img = cv2.resize(img, (500, 500))
    cv2.imshow("img2", img2)
    k = cv2.waitKey(1)&0xFF
    if k == 27: #esc exit
        break

#cv2.waitKey(0)
cv2.destroyAllWindows()


运行结果:绿色换成黄色

四、资料

「黑夜寻白天」的博客:
https://blog.csdn.net/weixin_44598554/article/details/130627957

相关文章

网友评论

    本文标题:Python:颜色替换

    本文链接:https://www.haomeiwen.com/subject/bjutndtx.html