美文网首页每周一赞
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