2013-05-17 12 views
22

Chcę umieścić tekst na obrazie. piszę kod jako:Jak napisać tekst na obrazie w oknach przy użyciu python opencv2

cv2.putText(image,"Hello World!!!", (x,y), cv2.CV_FONT_HERSHEY_SIMPLEX, 2, 255) 

To daje błąd, mówiąc: „moduł” obiekt ma atrybut „CV_FONT_HERSHEY_SIMPLEX”

Zapytanie nie mogę używać czcionki typu jak powyżej? Szukałem w Internecie, ale znalazłem tylko składnię związaną z OpenCv C++ dla initFont. Potem pomyślałem o użyciu putText, aby przekazać typ czcionki jako parametr. Ale to nie działa dla mnie.

Wszelkie sugestie?

Odpowiedz

19

Czy był CV_FONT_HERSHEY_SIMPLEX w cv (1)? Oto wszystko, co mam dostępne dla CV2 „font”:

FONT_HERSHEY_COMPLEX 
FONT_HERSHEY_COMPLEX_SMALL 
FONT_HERSHEY_DUPLEX 
FONT_HERSHEY_PLAIN 
FONT_HERSHEY_SCRIPT_COMPLEX 
FONT_HERSHEY_SCRIPT_SIMPLEX 
FONT_HERSHEY_SIMPLEX 
FONT_HERSHEY_TRIPLEX 
FONT_ITALIC 

spadnie „CV_” wydaje się działać dla mnie.

cv2.putText(image,"Hello World!!!", (x,y), cv2.FONT_HERSHEY_SIMPLEX, 2, 255) 
20

Ten kod wykorzystuje cv2.putText do nakładania tekstu na obrazie. Potrzebujesz zainstalowanych NumPy i OpenCV.

import numpy as np 
import cv2 

# Create a black image 
img = np.zeros((512,512,3), np.uint8) 

# Write some Text 

font     = cv2.FONT_HERSHEY_SIMPLEX 
bottomLeftCornerOfText = (10,500) 
fontScale    = 1 
fontColor    = (255,255,255) 
lineType    = 2 

cv2.putText(img,'Hello World!', 
    bottomLeftCornerOfText, 
    font, 
    fontScale, 
    fontColor, 
    lineType) 

#Display the image 
cv2.imshow("img",img) 

#Save image 
cv2.imwrite("out.jpg", img) 

cv2.waitKey(0) 
5

To rzeczywiście jest irytujący problem. dla Pythona 2.x.x użyć:

cv2.CV_FONT_HERSHEY_SIMPLEX 

i Python 3.x.x:

cv2.FONT_HERSHEY_SIMPLEX 

Polecam używanie środowisko autouzupełniania (pyscripter lub scipy na przykład). Jeśli szukasz przykładowego kodu, upewnij się, że używają tej samej wersji Pythona (jeśli nie upewnią się, że zmieniłeś kod).

0

Oto kod z parametrem etykiet

def draw_text(self, frame, text, x, y, color=BGR_COMMON['green'], thickness=1.3, size=0.3,): 
    if x is not None and y is not None: 
     cv2.putText(
      frame, text, (int(x), int(y)), cv2.FONT_HERSHEY_SIMPLEX, size, color, thickness) 

Dla nazwy czcionki można znaleźć inną odpowiedź w tym wątku.

Fragment odpowiedzi przez @Roeffus

To rzeczywiście trochę przykry problem. Dla pytona 2.x.x użyć:

cv2.CV_FONT_HERSHEY_SIMPLEX i Python 3.x.x:

cv2.FONT_HERSHEY_SIMPLEX

dla bardziej zobaczyć ten http://www.programcreek.com/python/example/83399/cv2.putText

Powiązane problemy