Как нарисовать красную фигуру на черном фоне в cv2? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть изображение с черным фоном. Как мне нарисовать на нем красную фигуру? Красный цвет должен быть (0,0,255) правильно? Но он показывает как черный, поэтому он не виден на черном фоне. Лучшее, что я мог сделать, это создать белый прямоугольник в следующем примере. Мой вопрос: как мне сделать его красным? Я думаю, что мне здесь не хватает чего-то простого. Пожалуйста помоги.

import cv2
import numpy as np

img = np.zeros((500,500,1), np.uint16)
cv2.rectangle(img, (200, 200), (300, 300), (0, 0, 255), 5)
cv2.imshow('image',img)
cv2.waitKey(100000)

Вы увидите, что прямоугольник даже не отображается:

enter image description here

И лучшее, что я мог сделать, это было белый прямоугольник, как это:

img = np.zeros((500,500,1), np.uint16)
cv2.rectangle(img, (200, 200), (300, 300), (2**16, 0, 0), 5)
cv2.imshow('image',img)
cv2.waitKey(100000)

enter image description here

1 Ответ

3 голосов
/ 16 апреля 2020

Вы пытаетесь нарисовать цвет (3 канала) на черном (один канал) изображении. Вам необходимо преобразовать черное изображение в 3 канала. Вот как я это делаю в Python / OpenCV

import cv2
import numpy as np

# create one channel black image (grayscale)
img = np.zeros((500,500))

# convert to 3 channel black (color)
img = cv2.merge([img,img,img])

# draw on it in color
cv2.rectangle(img, (200, 200), (300, 300), (0, 0, 255), 5)
cv2.imshow('image',img)
cv2.waitKey(0)


Результат - контур красного квадрата на черном фоне

...