1

opencv ライブラリ (kmeans2) で kmeans クラスタリング アルゴリズムを適用しようとしていますが、各サンプル ポイントには 4 つ以上の値 (4 つ以上の機能) があります。

cvMat を使用して kmeans2 のパラメーターを準備しようとすると、値を出力または割り当てるたびに例外が発生します。

ここに私が試した2つの方法があります

最初の方法

import cv
from numpy import *
a = zeros([20,1,6])
b = cv.fromarray(a)
print b[0,0]
OpenCV Error: One of arguments' values is out of range (The number of channels must be 1, 2, 3 or 4) in cvRawDataToScalar, file /build/buildd/opencv-2.3.1/modules/core/src/array.cpp, line 1531
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
cv2.error: The number of channels must be 1, 2, 3 or 4

2番目の方法

import cv
from numpy import *
a = cv.CreateMat(20,1,cv.MAKETYPE(cv.CV_32F,6))
print a[0,0]
OpenCV Error: One of arguments' values is out of range (The number of channels must be 1, 2, 3 or 4) in cvRawDataToScalar, file /build/buildd/opencv-2.3.1/modules/core/src/array.cpp, line 1531
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
cv2.error: The number of channels must be 1, 2, 3 or 4

kmeans アルゴリズムの cvMat パラメータを作成および操作する正しい方法は何ですか?

4

1 に答える 1

2

あなたが犯している間違いは、間違った次元の行列を形成することです。これを変える

a = zeros([20,1,6])

これに

a = zeros([20,6,1])

この

a = cv.CreateMat(20,1,cv.MAKETYPE(cv.CV_32F,6))

これに

a = cv.CreateMat(20, 6, cv.CV_32F)

ドキュメントを誤解しているようです

サンプル–入力サンプルの浮動小数点行列。サンプルごとに1行。

各列には機能があります。

于 2012-04-30T06:56:36.423 に答える