Я не могу напечатать цветной текст - PullRequest
1 голос
/ 25 апреля 2019

Я не могу напечатать текст оранжевого цвета. Я определил края изображения и затем напечатал на нем текст.

%matplotlib inline
import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('ind_maharashtra.png',0)
edges = cv2.Canny(img,100,20)
cv2.imwrite('Edged_img.jpg',edges)
#plt.subplot(121)
img1 = cv2.imread('Edged_img.jpg',0)

font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img1,'JAI MAHARASHTRA !!',(70,150), font, 0.7,(255,69,0),2,cv2.LINE_8)
cv2.imshow('Maharashtra Map',img1)
#cv2.imshow('Maharashtra Map',img)

cv2.waitKey(0)
cv2.destroyAllWindows()

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Вы загружаете свой jpg в градациях серого, поэтому вы сможете записывать только градации серого в img1

OpenCV Imread docs enter image description here

изменить эту строку

img1 = cv2.imread('Edged_img.jpg',0)

до

img1 = cv2.imread('Edged_img.jpg',1)

Как вы можете видеть из вышеупомянутых связанных документов, использование этих номеров - это нормально, но вы фактически устанавливаете флаг, поэтому вы можете использовать определение флага, чтобы сделать ваш код более понятным. По совпадению, если бы вы использовали флаги, у вас, вероятно, не было бы этой проблемы.

Вы можете изменить свою линию на

img1 = cv2.imread('Edged_img', cv2.IMREAD_COLOR)

Посмотрите, насколько яснее и понятнее это. Особенно, когда вы вернетесь к этому коду / передадите его другому разработчику через несколько месяцев.

0 голосов
/ 25 апреля 2019

Проблема в том, что изображение, на котором вы пытаетесь нарисовать (изображение с именем img1), является изображением серой шкалы, поскольку 2-й аргумент cv2.imread равен 0 в следующей строке:

img1 = cv2.imread('Edged_img.jpg',0)

У вас есть 2 варианта решения этой проблемы.Сначала необходимо загрузить изображение в виде цветного изображения следующим образом:

img1 = cv2.imread('Edged_img.jpg')

В качестве альтернативы, если вы хотите, чтобы ваш холст имел вид grey-ish , вы можете просто скопировать одинканал для формирования 3-канального изображения следующим образом:

img1 = cv2.imread('Edged_img.jpg', 0)
img1 = cv2.cvtColor(img1, cv2.COLOR_GRAY2BGR)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...