OpenCV-python Train-LBPH识别器

时间:2018-06-10 12:25:46

标签: python opencv

我在python中编写了一个人脸识别器,但我在训练部分遇到了麻烦。

import cv2
import numpy as np
from os import listdir
from os.path import isfile, join

data_path = '/home/pi/Desktop/data'
onlyfiles = [f for f in listdir(data_path) if isfile(join(data_path, f))]


Training_Data, Labels = [],[]


for i, files in enumerate(onlyfiles):
        image_path = data_path + onlyfiles[i]
        print(image_path)
        images = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
        Training_Data.append(np.asarray(images, dtype=np.uint8))
        Labels.append(i)

Labels = np.asarray(Labels, dtype=np.int32)

model = cv2.createLBPHFaceRecognizer()

model.train( np.asarray(Training_Data) ,np.asarray(Labels) )
print("done")

当我运行它时,我收到此错误:

  

追踪(最近一次通话):     文件" Train_Model.py",第17行,in       Training_Data.append(np.asarray(images,dtype = np.uint8))     文件" /usr/lib/python2.7/dist-packages/numpy/core/numeric.py" ;,第460行,在asarray       返回数组(a,dtype,copy = False,order = order)   TypeError:long()参数必须是字符串或数字,而不是' NoneType'

谢谢。

2 个答案:

答案 0 :(得分:0)

在代码的第6行中添加/

(data_path = '/home/pi/Desktop/data/')

答案 1 :(得分:-1)

我遇到了同样的问题,并且我解决了这个问题。 当您运行

onlyfiles = [f for f in listdir(data_path) if isfile(join(data_path, f))]
onlyfiles = onlyfiles [1:]

该命令当时在位置0添加另一个拇指img。

所以我们添加了新命令

{{1}}

这意味着我们忽略了第一张图片

正在运行