关于此函数抛出错误有很多问题,例如here和here,但我认为我有一个独特的转折 . 我要做的是浏览文件夹中的所有图像并检测任何面部 .
import cv2
import sys
import os
#Get the folder to be searched and the location of the cascade file from arguments
imageDirectory = sys.argv[1]
cascadePath = sys.argv[2]
faceCascade = cv2.CascadeClassifier(cascadePath)
#Iterate over the png files in the directory
for imagePath in os.listdir(imageDirectory):
if imagePath.endswith(".png"):
image = cv2.imread(imagePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30)
#flags = cv2.CV_HAAR_SCALE_IMAGE
)
第一个图像将被正确处理,但第二个图像将抛出一个错误:
OpenCV错误:断言失败(scn == 3 || scn == 4)在cvtColor中,文件/tmp/opencv3-20170202-24427-1s95vpr/modules/imgproc/src/color.cpp,第9748行追踪(最近一次调用最后一次) ):文件“face_detect_flip.py”,第22行,灰色= cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)cv2.error:/tmp/opencv3-20170202-24427-1s95vpr/modules/imgproc/src/color.cpp: 9748:错误:(-215)scn == 3 || scn == 4在函数cvtColor中
文件都是颜色.pngs所以我不知道为什么脚本将对其中一些而不是其他人起作用 . 有时更改顺序或文件名(但不是扩展名)将改变脚本是否运行,但不会改变我能辨别的任何模式 .