2016-09-13 2 views
1

J'essaie de classer les objets capturés à partir de ma webcam embarquée sur mon ordinateur portable en utilisant python. Voici le code que je modifié de ce lien http://www.pyimagesearch.com/2016/08/10/imagenet-classification-with-python-and-keras/Comment classer les objets de la webcam en python

from keras.preprocessing import image as image_utils 
from imagenet_utils import decode_predictions 
from imagenet_utils import preprocess_input 
from squeezenet import squeeze 
import numpy as np 
import cv2 

camera = cv2.VideoCapture(0) 

while True: 
    ret, frame = camera.read() 
    print("[INFO] loading and preprocessing image...") 
    image = image_utils.load_img(camera) 
    image = image_utils.img_to_array(image) 

    image = np.expand_dims(image, axis=0) 
    image = preprocess_input(image) 

    print("[INFO] loading network...") 
    model = squeeze(weights = "imagenet") 

    #classify the image 
    print("[INFO] classifying image...") 
    preds = model.predict(image) 
    (inID, label) = decode_predictions(preds)[0] 

    print("ImageNet ID: {}, Label: {}".format(inID, label)) 
    cv2.putText(orig, "Label: {}".format(label), (10, 30), 
     cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) 
    cv2.imshow("Classification", camera) 
    cv2.waitKey(0) 

camera.release() 
cv2.destroyAllWindows()  

Je suis nouveau dans le classement image/objet en utilisant python alors pardonnez-moi si ce code modifié semble stupide.

J'exécuter le code et renvoyer une erreur de type comme celui-ci

Using Theano backend. 
Using gpu device 0: GeForce 920MX (CNMeM is disabled, cuDNN 5005) 
[INFO] loading and preprocessing image... 
Traceback (most recent call last): 
    File "camdetect.py", line 13, in <module> 
    image = image_utils.load_img(camera) 
    File "/usr/local/lib/python2.7/dist-packages/keras/preprocessing/image.py", line 165, in load_img 
img = Image.open(path) 
    File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 2285, in open 
fp = io.BytesIO(fp.read()) 
TypeError: 'tuple' does not have the buffer interface 

J'ai essayé de chercher l'erreur mais n'a pas trouvé de réponse.

Ma question est de savoir comment classer les objets capturés à partir de la webcam? et s'il y a une suggestion sur la façon dont je peux réécrire ce code ou peut-être résoudre l'erreur sera bonne aussi.

Merci d'avance.

Répondre

0

L'erreur est comme dans un message rapporté:

image = image_utils.load_img(camera) 

Le correctif pourrait être:

# image = image_utils.load_img(camera) 
image = image_utils.img_to_array(frame)