2017-05-17 22 views
0

關於Python 2.7 OpenCV的運行3.2視窗10 以下代碼是投擲errorAttributeError的: '模塊' 對象沒有屬性 'InitFont'

AttributeError的: '模塊' 對象沒有屬性 'InitFont'

我最好的猜測是由於OpenCV 3在低於版本的情況下正常工作。

import cv2 
import numpy as np 

recognizer = cv2.face.createLBPHFaceRecognizer() 
recognizer.load('trainner/trainner.yml') 
cascadePath = "haarcascade_frontalface_default.xml" 
faceCascade = cv2.CascadeClassifier(cascadePath); 


cam = cv2.VideoCapture(0) 
font = cv2.InitFont(cv2.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 1, 1) 
while True: 
    ret, im =cam.read() 
    gray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY) 
    faces=faceCascade.detectMultiScale(gray, 1.2,5) 
    for(x,y,w,h) in faces: 
     cv2.rectangle(im,(x,y),(x+w,y+h),(225,0,0),2) 
     Id, conf = recognizer.predict(gray[y:y+h,x:x+w]) 
     if(conf<50): 
      if(Id==1): 
       Id="Prosper" 

     else: 
      Id="Unknown" 
     cv2.cv.PutText(cv2.cv.fromarray(im),str(Id), (x,y+h),font, 255) 
    cv2.imshow('im',im) 
    if cv2.waitKey(10) & 0xFF==ord('q'): 
     break 
cam.release() 
cv2.destroyAllWindows() 
+0

錯誤是「AttributeError的: '模塊' 對象沒有屬性 'InitFont' 「 –

回答

2

您不再需要初始化字體; cv模塊已棄用,您需要的所有內容應該來自cv2。在cv2 api中,圖像是數組,因此您不需要轉換fromarray。調用putText函數的語法也有點不同。

查看文檔putText這裏:http://docs.opencv.org/3.0-beta/modules/imgproc/doc/drawing_functions.html#cv2.putText

這應該爲你工作。請確保在程序開始時刪除InitFont功能。

fontface = cv2.FONT_HERSHEY_SIMPLEX 
fontscale = 1 
fontcolor = (255, 255, 255) 
cv2.putText(im, str(Id), (x,y+h), fontface, fontscale, fontcolor) 

編輯:這裏的一個最小的工作實施例中從VideoCapture添加文本到幀使用putText

import cv2 
import numpy as np 

cam = cv2.VideoCapture(0) 

fontFace = cv2.FONT_HERSHEY_SIMPLEX 
fontScale = 1 
fontColor = (255, 255, 255) 

ret, im = cam.read() 
locy = int(im.shape[0]/2) # the text location will be in the middle 
locx = int(im.shape[1]/2) #   of the frame for this example 

while True: 
    ret, im = cam.read() 
    cv2.putText(im, "Success!", (locx, locy), fontFace, fontScale, fontColor) 
    cv2.imshow('im', im) 
    if cv2.waitKey(10) & 0xFF==ord('q'): 
     break 

cam.release() 
cv2.destroyAllWindows() 
+0

感謝您的回答,但它顯示了im未定義的另一個錯誤。 –

+0

@prosperpatel你可以編輯OP來顯示你當前的代碼嗎?你的語法對於閱讀框架是正確的。我將用MWE編輯我的文章,將文本放在視頻捕獲幀上,希望這有助於! –

+0

感謝@亞歷山大那個錯誤解決了。但它顯示了Traceback(最近調用最後一個)的另一個錯誤: cv2.PutText(cv2.fromarray(im),str(Id)文件「D:\ Minor \ train \ recognise.py」,line 27,in ,'(x,y + h),font,255) AttributeError:'module'對象沒有屬性'PutText' –

相關問題