如何保存openCV分类器?

时间:2018-08-14 11:28:24

标签: python-3.x opencv pickle

我想保存一个在多幅图像上经过训练的分类器,以避免每次我运行程序时都需要花费时间来对其进行重新训练。对于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)

有什么方法可以保存此类分类器?

1 个答案:

答案 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')