2014-12-25 5 views
7

Я использую cv2.putText(), чтобы нарисовать текстовую строку на изображении.OpenCV putText() new line character

Когда я пишу:

cv2.putText(img, "This is \n some text", (50,50), cv2.FONT_HERSHEY_SIMPLEX, 1, 2) 

текст нарисован на изображении:

This is ? some text

Я ожидал, что текст, который должен быть напечатан в новой строке, \n является маскирующим для новой строки, но вместо этого рисует ?.

Почему это происходит? Я делаю что-то неправильно ?

+2

putText могут сделать буквы, цифры и некоторые символы, такие как = *!. не намного больше. – berak

ответ

12

К сожалению, putText не правильно обрабатывает \n символы. См. relevant rejected pull request. Вы должны разделить ваш текст самостоятельно и сделать несколько putText звонки, что-то вроде:

text = "This is \n some text" 
y0, dy = 50, 4 
for i, line in enumerate(text.split('\n')): 
    y = y0 + i*dy 
    cv2.putText(img, line, (50, y), cv2.FONT_HERSHEY_SIMPLEX, 1, 2)