[英]how to change a range of RGB color to Red with opencv python
從這個stackoverflow問題我發現了這段代碼
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])
是的你可以。
首先,必須創建要更改顏色范圍的遮罩,答案是OpenCV的inRange函數 。
然后,通過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顏色空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.