I'm totally lazy with raspberry and I'm trying to use opencv version 3.4.2 with python 3.5.2 on raspberry pi 3 using the camera itself for raspberry to run an example facial recognition code using the camera. In linux mint, the same code runs successfully. However, when I try to run on raspberry, it accuses error. Below the code:
import cv2
import numpy as np
camera = cv2.VideoCapture(0)
classificador = cv2.CascadeClassifier("/home/linux/Documentos/deteccao/cascades/haarcascade_frontalface_default.xml")
amostra = 1
numeroAmostras = 25
id = input('Digite seu identificador: ')
largura, altura = 220, 220
print('Capturando as faces...')
while (True):
conectado, imagem = camera.read()
imagemCinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY)
facesDetectadas = classificador.detectMultiScale(imagemCinza, scaleFactor=1.5, minSize=(180, 180))
for (x, y, l, a) in facesDetectadas:
cv2.rectangle(imagem, (x, y), (x + l, y + a), (0, 0, 255), 2)
if cv2.waitKey(1) & 0xFF == ord('p'):
imagemFace = cv2.resize(imagemCinza[y:y + a, x:x + l], (largura, altura))
cv2.imwrite("/home/linux/Documentos/reconhecimento/fotos/pessoa." + str(id) + "." + str(amostra) + ".jpg", imagemFace)
print("[foto " + str(amostra) + " capturada com sucesso]")
amostra += 1
cv2.imshow("Face", imagem)
#if cv2.waitKey(1) == ord ('q'):
# break
if (amostra >= numeroAmostras + 1):
break
print("Faces capturadas com sucesso")
camera.release()
cv2.destroyAllWindows()
And, here below, the error:
OpenCV Error: /Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/pi
/opencv-3.3.1/module/imgproc/src/color.cpp, line 11048
Traceback (most recent call last):
File "captura.py", line 9, in <module>
imagemCinza = cv2.cvtColor(imagem, cv2.COLOR_BGR2GRAY)
cv2.error: /home/pi/opencv-3.3.1/module/imgproc/src/color.cpp:11048: error:
(-215) scn == 3 || scn == 4 in function cvtColor