我想保存一个在多幅图像上经过训练的分类器,以避免每次我运行程序时都需要花费时间来对其进行重新训练。对于sklearn的分类器,我可以使用pickle.load
对其进行腌制,但是当我尝试执行相同的操作时,出现以下错误:
TypeError:无法腌制cv2.face_LBPHFaceRecognizer对象
在这里分类器本身:
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml')
clf = cv2.face.LBPHFaceRecognizer_create()
img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)
# detecting face using haarcasade
face = face_cascade.detectMultiScale(img, minNeighbors = 3)
# detecting region of interest and appending it to a separate matrix
for x, y, w, h in face:
roi = img[y:y+h, x:x+w]
x_train.append(roi)
y_train.append(label)
clf.train(x_train, y_train)
有什么方法可以保存此类分类器?
答案 0 :(得分:3)
您可以将这些分类器另存为var domains = ["domain1", "domain2", "domain3"];
var domainData = {
type: 'combo',
name: 'domain',
width: 200,
offsetLeft: 30,
label: 'Test label',
required: true,
};
var newObjectData = Object.assign( {}, domainData, {options: domains.map((val) => ({text: val, value: val}))} );
文件。
例如:
.yml
您可以使用以下命令加载该文件:
clf.save('trainingData.yml')