文件读取问题
1、解决cv2.imread读取含有中文路径的文件
cv2.imread()直接读取含有中文路径的图片,会返回None,解决方法如下:
import cv2
import numpy as np
img=cv2.imdecode(np.fromfile(path+picname, dtype=np.uint8), cv2.IMREAD_GRAYSCALE)
2、txt文档如何判断是否读取到文末
需要对txt文档的每一行进行处理的时候,最后需要判断如何读取到文件的末尾即可跳出循环,解决办法如下:
f=open(path+'xx.txt','r')
while(True):
line=f.readline()[:-1]#去掉最后的换行符号‘\n’
if not line:
break
#下方可继续编程处理数据
没有该属性的问题
一般而言没有该属性则选择pip install xx语句解决即可,但是有些时候会出现无法解决的情况,此处主要说明这些问题。
1、module ‘cv2.cv2’ has no attribute ‘face’
因为一般在学习opencv时我们只安装了opencv-python,如果需要实现人脸识别的一些算法,我们还需要安装opencv-contrib-python,所以理论上直接pip install opencv-contrib-python就行,但是实践发现这样不能成功安装,具体操作如下:
pip uninstall opencv-python
pip install opencv-python
pip install opencv-contrib-python
具体原因我也不太清楚,这样安装之后就神奇的好使了,有博客说可能原因是相关包没安装或者cv2的相关包没安装完【链接: link.】
其他问题
1、在人脸识别的时候出现:labels data type = 19 is not supported
原始代码如下:
model=cv2.face.EigenFaceRecognizer_create()
model.train(np.asarray(data[0]),np.asarray(data[1]))
报错如下:
这是因为model.train对标签的要求是int类型,所以只需要简单转换一下数据类型就可以解决,解决方法如下:
model=cv2.face.EigenFaceRecognizer_create()
model.train(np.asarray(data[0]),np.asarray(data[1],dtype=np.int32))