10

サイズが128x128のOpenCV(Python)を介して一連のテスト画像をロードし、それらをベクトル(1、128x128)に再形成し、それらをすべてマトリックスに入れてPCAを計算します。私は新しいcv2ライブラリを使用しています...

コード:

import os
import cv2 as cv
import numpy as np

matrix_test = None
for image in os.listdir('path_to_dir'):
    imgraw = cv.imread(os.path.join('path_to_dir', image), 0)
    imgvector = imgraw.reshape(128*128)
    try:
        matrix_test = np.vstack((matrix_test, imgvector))
    except:
        matrix_test = imgvector

# PCA
mean, eigenvectors = cv.PCACompute(matrix_test, np.mean(matrix_test, axis=0))

そして、PCA部分で常に失敗します(画像の読み込みとすべてをテストしましたが、結果のマトリックスは本来あるべき姿です)...私が得るエラーは次のとおりです。

ファイル「main.py」の 22 行目

平均、固有ベクトル = cv.PCACompute(matrix_test、np.mean(matri_test、軸 = 0))

cv2.error: /path/to/OpenCV-2.3.1/modules/core/src/matmul.cpp:2781: エラー: (-215) _mean.size() == 関数 operator() の mean_sz

4

2 に答える 2

10

問題はサイズだと思う

np.mean(matrix_test, axis=0)

そのサイズは (128x128,) であり、(1, 128x128) ではありません。したがって、以下のコードは機能するはずです

mean, eigenvectors = cv.PCACompute(matrix_test, np.mean(matrix_test, axis=0).reshape(1,-1))
于 2011-12-19T21:59:12.610 に答える
6

置くこともできます

cv.PCACompute(matrix_test, mean = np.array([]))

関数は平均を計算します。

于 2016-03-24T15:39:10.943 に答える