代码来自一本教授OpenCV的书。我运行了代码,但它总是显示错误。
import cv2
casc_path = cv2.data.haarcascades + "haarcascade_frontalface_default.xml"
faceCascade = cv2.CascadeClassifier(casc_path)
faceCascade = cv2.CascadeClassifier(casc_path)
faces = faceCascade.detectMultiScale(image, scaleFactor=1.1, minNeighbors=5, minSize=(30,30), flags = cv2.CASCADE_SCALE_IMAGE)
imgheight=image.shape[0]
imgwidth=image.shape[1]
cv2.rectangle(image, (10,imgheight-20), (110,imgheight), (0,0,0), -1)
cv2.putText(image,"Find " + str(len(faces)) + " face!", (10,imgheight-5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255), 2)
for (x,y,w,h) in faces:
cv2.rectangle(image,(x,y),(x+w, y+h),(128,255,0),2)
cv2.namedWindow("facedetect")
cv2.imshow("facedetect", image)
cv2.waitKey(0)
cv2.destroyWindow("facedetect")
错误就在这里。
File "K:/pyCharm_object/OpevCV.py", line 2, in <module>
casc_path = cv2.data.harrcascades + "harrcascade_frontalface_default.xml"
AttributeError: module 'cv2' has no attribute 'data'
OpenCV附带并知道在哪里查找预先训练的分类器。
你可以省略那一行,简单地做:
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
pip install opencv-contrib-python --upgrade
正如@Ruli在评论中所建议的,已经为我解决了这个问题。
您对安装的openCV软件包有信心吗?如果你有
opencv-contrib-python
包,您不应该看到该错误。
只需在文件资源管理器中搜索即可找到haarcascade_foronalface_default.xml的位置。然后复制所需xml文件的路径,并以原始形式粘贴路径:
casc_path = (r"**your path**haarcascade_frontalface_default.xml")
示例:
casc_path = (r"C:UsersUser_nameminiconda3pkgslibopencv-4.5.3-py39h4b6fd43_5Libraryetchaarcascadeshaarcascade_frontalface_default.xml")
这对我有用。:(