这里就只是单纯讲一下opencv的安装与使用时遇到的坑,毕竟作为一个萌新还没资格对一个成熟的框架指手画脚。
安装:
一般直接pip3安装太慢了的话我们可以使用国内的镜像,这里我用的是清华源
pip3 install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
但是导入时是导入cv2,而不是opencv.
然后就是掉包它里面的分类器时,路径不好找的话就直接在电脑里搜索cv2里面有个data文件夹的就是,然后他里面有这些文件:
这些文件名还是挺明显的,所以当我们要使用脸部识别时,就用含frontalface的,这里我用的是默认的识别器:
import cv2 as cv
face_detect=cv.CascadeClassifier(r'C:\Users\csl\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\cv2\data\haarcascade_frontalface_default.xml')
调用cv.face.LBPHFaceRecognizer_create()报错
AttributeError: module ‘cv2‘ has no attribute ‘face‘
出现这个报错时,原因是我们库没有装全,opencv-contrib-python库
解决办法有两个:
1:重新装
pip3 install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple
2:之前装了但还是报错的话,建议删掉重装
pip uninstall opencv-contrib-python
pip uninstall opencv-python
pip install opencv-python
pip install opencv-contrib-python
waitkey无法接收键盘命令
waitkey(时间)用于在指定时间内接收键盘命令,但我觉得更主要的作用是实现摄像头帧数的更新,至于会有时候出现无法接收键盘命令的情况,通常是因为你鼠标的焦点在其他地方,而不在opencv给你弹出的图像框中,你只要用鼠标点一下图相框,对焦到图相框,就可以解决啦。
cv.putText给图像添加中文变成‘?’
这个大佬的解决方法最好,而且它还提供了中文字体的安装包,很值得借鉴
cv.imwrite中文乱码问题
这个主要是因为这个函数下,你要保存的文件夹甚至是文件名都不能出现中文或是空格,只能用英文,当然也有解决办法,换一个函数即可:
#cv.imwrite(clerk_info_folder+'/'+str(id)+'.'+name+'.jpg',img) #保存照片(而且文件夹名称不能含中文或者空格)
cv.imencode('.jpg', img)[1].tofile(clerk_img_folder+'/'+str(id)+'.'+name+'.jpg') #解决了中文问题
:SourceReaderCB::~SourceReaderCB terminating async callback
虽然这个只是一个警告不影响程序进行,但解决掉还是最好,只要把上面的代码换成下面的格式就行了:
cap=cv.VideoCapture(0) #会有警告
cap=cv.VideoCapture(0,cv.CAP_DSHOW) #解决办法