Croix rapide méthode de corrélation en Python

J'ai été récemment en essayant de trouver un moyen rapide et efficace pour effectuer de la croix-vérifier la corrélation entre les deux tableaux à l'aide de langage Python. Après un peu de lecture, j'ai trouvé ces deux options:

  1. La NumPy.correlate() méthode, qui est trop lent quand il s'agit de tableaux de grande taille.
  2. La cv.MatchTemplate() méthode, qui semble être beaucoup plus rapide.

Pour des raisons évidentes, j'ai choisi la deuxième option. J'ai essayé d'exécuter le code suivant:

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)

Même si ce code suppose d'être très simple, il génère l'erreur suivante:

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

Après quelques heures de frustrant tente, je suis toujours bloqué! Quelqu'un at-il une suggestion?

BTW, c'est ma version de Python de sortie:

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.

Merci à vous tous!

Il y a un certain nombre de suggestions ici: stackoverflow.com/questions/6991471/...
J'ai déjà lu ce post, merci. Comme je l'ai dit, je ne veux pas utiliser le NumPy\SciPy bibliothèques, car ils offrent une assez lent méthodes.
Bien que numpy/scipy n'utilisez pas toujours la manière la plus rapide de mise en œuvre, ils ne sont pas généralement lente. Par exemple, leur FFT n'est pas aussi rapide que certains (c'est pourquoi j'ai écrit mon FFTW wrappers). Le point est, ne vous attendez pas à une magique augmentation de la vitesse à l'aide d'OpenCV rapport à l'aide de la "corriger" l'algorithme avec numpy/scipy. Numpy/scipy sont assez omniprésent, qui est un gros plus.

OriginalL'auteur Shlomi | 2012-09-07