0
img = cv2.imread('example.jpg')
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# lower mask (0-10)
lower_red = np.array([0, 50, 50])
upper_red = np.array([10, 255, 255]
mask0 = cv2.inRange(img_hsv, lower_red, upper_red)
# upper mask (170-180)
lower_red = np.array([170, 50, 50])
upper_red = np.array([180, 255, 255])
mask1 = cv2.inRange(img_hsv, lower_red, upper_red)
# join my masks
mask = mask0 + mask1
height = mask.shape[0]
width = mask.shape[1]
# iterate over every pixel
for i in range(height):
for j in range(width):
px = mask[i,j]
print px
# check if pixel is white or black
if (px[2] >= 0 and px[2] <= 40):
В приведенном выше примере «px» - это пиксель в BGR. Мне нужно преобразовать значение в HSV, потому что я хочу проверить, находится ли пиксель в определенном цветовом диапазоне.python - opencv - convert pixel from bgr to hsv
Я уже пытался
colorsys.rgb_to_hsv(px[2], px[1], px[0})
, который вызывает ошибку: недопустимый индекс скалярной переменной
Спасибо!
спасибо за ответ! Как я могу проверить, находится ли один пиксель в синем цветовом диапазоне? – cmplx96
Он говорит так в коде, который я предоставил из документов. Просто получите свои 'px' из' mask' и проверьте, белый ли он или черный. –
px = img [i, j] теперь возвращает 0 вместо массива из трех значений. Знаете ли вы, почему это так? – cmplx96