Я работаю над съемкой с веб-камерой, подключенной к модели Raspberry Pi 2 B. Затем я обнаруживаю лицо на картинке и обрезаю лицо и сохраняю его как отдельное изображение. Приведенный ниже код отлично работал в Windows.обрезка изображения OpenCV 2 на Raspbian
import numpy as np
import cv2
import math
from random import random
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)
ret,frame = cap.read()
#naming the image and save path
img_name = str(int(math.ceil(100000*random())))
img_path = 'images/'+img_name+'.png'
crop_img_path = 'images/'+'crop_'+img_name+'.png'
# directly saving the image
cv2.imwrite(img_path,frame)
cap.release()
img = cv2.imread(img_path) #read image to numeric array
#printing image information
print str(img.shape) + " "
print str(img.size) + " "
print str(img.dtype)
#detecting face
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
face_cascade.load('haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) # drawing rectangle (Blue, thickness 2)
print str(x)+" "+str(y)+" "+str(x+w)+" "+str(y+h) #printing region coordinates of rectangle
crop_img = img[y:y+h,x:x+w]
cv2.imwrite(crop_img_path,crop_img)
Но это дает следующее сообщение об ошибке в Raspbian:
Traceback (most recent call last):
File "xyz.py", line 35, in <module>
crop_img = img[y:y+h,x:x+w]
TypeError: 'NoneType' object has no attribute '__getitem__'
Примечание 1: Оригинал Захваченное изображение сохраняется в папке изображений.
Примечание 2: Я установил OpenCV для Python с помощью команды последующей:
sudo apt-get install python-opencv
Почему это работает в Windows? – alloyeduniv
Работает ли он в Raspbian, если вы применяете мой ответ? –
Да, да. Извините, забыл отметить его правильно. Благодарю. – alloyeduniv