Raspberry Pi 3 Python 和 Opencv 用于人脸识别
Raspberry Pi 3 Python and Opencv for facial recognition
我在尝试在虚拟环境或正常环境中执行脚本时收到此消息 Python shell。
File "/home/pi/facesample1.py", line 10, in <module>
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
error: /home/pi/opencv-3.1.0/modules/imgproc/src/color.cpp:8000: error: (-215) scn == 3 || scn == 4 in function cvtColor
这是我的代码:
import cv2
#Load an image from file
image = cv2.imread("fronthead.jpg", 1)
#Load a cascade file for detecting faces
face_cascade = cv2.CascadeClassifier('/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml')
#Convert to grayscale
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
#Look for faces in the image using the loaded cascade file
faces = face_cascade.detectMultiScale(gray, 1.1, 5)
print "Found "+str(len(faces))+" face(s)"
#Draw a rectangle around every found face
for (x,y,w,h) in faces:
cv2.rectangle(image,(x,y),(x+w,y+h),(255,0,0),2)
#Save the result image
cv2.imwrite('camresult.jpg',image)
为什么会出现此错误?
您的 image
变量显然不是 3 或 4 通道图像。
因此,cvtColor()
无法将其转换为灰度。
检查 image.shape
并查看它 returns 具有正确尺寸的东西(即最后一个尺寸为 3 或 4 的 3D 数组)。
也很有可能image
是None
,一般是文件路径错误
我在尝试在虚拟环境或正常环境中执行脚本时收到此消息 Python shell。
File "/home/pi/facesample1.py", line 10, in <module>
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
error: /home/pi/opencv-3.1.0/modules/imgproc/src/color.cpp:8000: error: (-215) scn == 3 || scn == 4 in function cvtColor
这是我的代码:
import cv2
#Load an image from file
image = cv2.imread("fronthead.jpg", 1)
#Load a cascade file for detecting faces
face_cascade = cv2.CascadeClassifier('/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml')
#Convert to grayscale
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
#Look for faces in the image using the loaded cascade file
faces = face_cascade.detectMultiScale(gray, 1.1, 5)
print "Found "+str(len(faces))+" face(s)"
#Draw a rectangle around every found face
for (x,y,w,h) in faces:
cv2.rectangle(image,(x,y),(x+w,y+h),(255,0,0),2)
#Save the result image
cv2.imwrite('camresult.jpg',image)
为什么会出现此错误?
您的 image
变量显然不是 3 或 4 通道图像。
因此,cvtColor()
无法将其转换为灰度。
检查 image.shape
并查看它 returns 具有正确尺寸的东西(即最后一个尺寸为 3 或 4 的 3D 数组)。
也很有可能image
是None
,一般是文件路径错误