私は最近、Python言語を使用して2つの配列間の相互相関チェックを実行するための高速で効率的な方法を見つけようとしています。いくつか読んだ後、私はこれらの2つのオプションを見つけました:
- この
NumPy.correlate()
方法は、大きな配列になると遅すぎます。 - この
cv.MatchTemplate()
方法は、はるかに高速のようです。
明らかな理由で、私は2番目のオプションを選択しました。次のコードを実行しようとしました。
import scipy
import cv
image = cv.fromarray(scipy.float32(scipy.asarray([1,2,2,1])),allowND=True)
template = cv.fromarray(scipy.float32(scipy.asarray([2,2])),allowND=True)
result = cv.fromarray(scipy.float32(scipy.asarray([0,0,0])),allowND=True)
cv.MatchTemplate(image,template,result,cv.CV_TM_CCORR)
このコードは非常に単純であると想定されていますが、次のエラーがスローされます。
OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /builddir/build/BUILD/OpenCV-2.1.0/src/cxcore/cxarray.cpp, line 2476
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
cv.error: Unrecognized or unsupported array type
イライラする数時間の試みの後、私はまだ立ち往生しています!誰か提案はありますか?
ところで、これは私のPythonバージョンの出力です:
Python 2.7 (r27:82500, Sep 16 2010, 18:03:06)
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
皆さん、ありがとうございました!