我想知道是否有任何方法/函数可以用来保存用Python在OpenCV中定义的经过训练的EM(Expectation Maximization或高斯混合模型)模型?在
我已经尝试过Pickledump()方法,但它不起作用。它显示一个错误:TypeError:can't pickle EM objects。此外,我还尝试了其他简单的方法,如文件的打开和写入(以XML格式)。然而,它也不起作用。在
下面是我的Python代码的一部分:
import cv2
import numpy as np
from sklearn import mixture
im = cv2.imread('001.png', False)
PCenter = [2,2]
pyrDown_img = im.copy()
X_train = []
gmm_clf = cv2.EM(12, cv2.EM_COV_MAT_DIAGONAL) # Initialize classifier object
for row in range(PCenter[0], pyrDown_img.shape[0] - PCenter[0]):
for col in range(PCenter[1], pyrDown_img.shape[1] - PCenter[1]):
patch = pyrDown_img[row-PCenter[0]:row+PCenter[0]+1, col-PCenter[1]:col+PCenter[1]+1]
patch = np.asarray(patch) # compute patch as a feature vector
X_train.append(patch.reshape(-1))
X_train = np.asarray(X_train)
gmm_clf.train(X_train) # train GMM classifier
我想将这个gmm_clf文件保存到一个文件中,以便以后用于测试。在
那就用腌菜保存吧。在
但是,不能根据doc中的最后一个部分
gmm_clf.setMat('means')
。在所以,你现在有两个选择:
修改opencv源代码,使均值和协方差不是只读的,然后再次编译cv2.so。
用提取平均值和cov预测数据。
(我选2个,这很容易。)
我知道这是老办法,但我刚碰到这个,我很确定这个方法比用泡菜好。{or}例如,使用^或^作为空格:
相关问题 更多 >
编程相关推荐