Хотелось бы узнать, существует ли какой-либо метод/функция, которая может использоваться для сохранения обучаемой модели EM (Expectation Maximization или модели гауссовой смеси), определенной в OpenCV с помощью Python?Как сохранить/написать OpenCV EM/GMM модель с помощью Python?
Я уже пробовал Pickledump() метод, но его не работает. Он показывает ошибку: TypeError: не может разжевывать объекты EM. Кроме того, я пробовал и другие простые методы, такие как открытие и запись файлов (в формате 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 в файл, так что я могу использовать его в дальнейшем для целей тестирования.
Спасибо большое. Да, похоже, что EM в OpenCV для Python не очень четко определен. Я использовал библиотеку sklearn, которая обеспечивает реализацию модели GMM и работает отлично. Там вы можете сохранить модель с помощью Pickle и повторно использовать ее в любое время позже. Что касается выбора, они оба имеют смысл. Но у меня мало времени на них расследование. – Sanchit