Tentative de mise en forme de la mise en forme directe d'une matrice d'homographie dans OpenCV. Vous n'avez pas besoin de savoir ce que cela signifie pour comprendre le problème.Définition d'images opencv/valeurs de tableau numpy à l'aide d'un tableau de pixels
suppose qu'il y a 2 images (une image est un tableau 2D Numpy de valeurs de pixels), A et B, et un tableau match
qui ressemble
[[ 6.96122642e+01 -1.06556338e+03 1.02251944e+00]
[ 6.92265938e+01 -1.06334423e+03 1.02246589e+00]
[ 6.88409234e+01 -1.06112508e+03 1.02241234e+00]
... ]
La première colonne est X, deuxième Y, et le troisième est un scalaire. Ces valeurs XY sont l'image des indices de pixels A et correspondent aux indices imageB
[[0,0],
[0,1],
[0,2]
... ]
Je veux utiliser cette information pour définir rapidement les valeurs de imageB de imageA. J'ai ce travail, mais ce n'est pas aussi vite que je voudrais
yAs = np.int32(np.round(match[:, 0]/match[:, 2])
xAs = np.int32(np.round(match[:, 1]/match[:, 2])
it = np.nditer(pixelsImageB[0], flags=['f_index'])
while not it.finished:
i = it.index
xA = xAs[i]
yA = yAs[i]
if in_bounds(xA, yA, imageA):
yB = pixB[0][i]
xB = pixB[1][i]
imageB[xB,yB] = imageA[xA,yA]
it.iternext()
Mais je ne sais pas comment faire ce jeûne dans Numpy, cette boucle fait naïvement est très lent. Je suis un scrub total à l'indexation avancée, la diffusion, et autres. Des idées?
'x' et' y' ressemblent aux premiers candidats à sortir de la boucle. par exemple. 'x = np.int32 (np.round (match [:, 0]/match [:, 2]))' –
Qu'est-ce que 'in_bounds'? – Divakar
x ou y est> 0 et