【问题标题】:how to change a range of RGB color to Red with opencv python如何使用opencv python将RGB颜色范围更改为红色
【发布时间】:2019-01-12 21:43:55
【问题描述】:

来自this stackoverflow question我找到了这段代码

import numpy as np
import imutils
import cv2
img_rgb = cv2.imread('black.png')
Conv_hsv_Gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(Conv_hsv_Gray, 0, 255,cv2.THRESH_BINARY_INV |cv2.THRESH_OTSU)
img_rgb[mask == 255] = [0, 0, 255]
cv2.imshow("imgOriginal", img_rgb)  # show windows
cv2.imshow("mask", mask)  # show windows
cv2.waitKey(0)

有什么办法可以换行

img_rgb[mask == 255] = [0, 0, 255]

或者其他什么让它改变一系列颜色? 例如:

([255, 255, 0], [255, 55, 10])

【问题讨论】:

    标签: python opencv image-editing python-3.7


    【解决方案1】:

    是的,你可以。

    首先,您必须创建要更改的颜色范围的蒙版,答案是inRange function of OpenCV

    然后,通过 numpy,您可以说出蒙版不是 0 的位置,将它们涂成红色。这是它的代码:

    import numpy as np
    import cv2
    
    # load image and set the bounds
    img = cv2.imread("D:\\debug\\HLS.png")
    lower =(255, 55, 0) # lower bound for each channel
    upper = (255, 255, 10) # upper bound for each channel
    
    # create the mask and use it to change the colors
    mask = cv2.inRange(img, lower, upper)
    img[mask != 0] = [0,0,255]
    
    # display it
    cv2.imshow("frame", img)
    cv2.waitKey(0)
    

    如果您实际上想要获得一系列颜色(例如所有蓝色),最好使用 HLS 或 HSV 颜色空间。

    【讨论】:

    • 当我运行它时,我收到一条错误消息,Traceback(最近一次调用最后一次):文件“C:/Users/Blake/Desktop/Python3.7/opencvtests2.py”,第 10 行,在 mask = cv2.inRange(img, lower, upper) cv2.error: OpenCV(3.4.2) C:\projects\opencv- python\opencv\modules\core\src\arithm.cpp:1761: 错误: (-215:断言失败)!函数'cv::inRange'中的_src.empty()
    • @R4nsomW4re 它说图像是空的...所以请确保 img 已正确加载:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 2019-02-11
    • 2020-10-14
    • 2019-03-28
    相关资源
    最近更新 更多