web-dev-qa-db-fra.com

Comment retourner une image avec opencv et python (sans cv2.flip)

je veux juste retourner l'image verticalement sans cv2.flip(), mais la sortie est une image complètement noire. où est mon erreur?

import cv2
import numpy as np


def flipv(imgg):
    for i in range(480):
        img2= np.zeros([480, 640, 3], np.uint8)
        img2[i,:]=imgg[480-i-1,:]

    return img2

img = cv2.imread("foto\\test.jpg", 1)

ads= flipv(img)

cv2.imshow("qw",ads)

cv2.waitKey(0)
cv2.destroyAllWindows()
3
Enes Erdogan

Votre code de retournement est correct (dépend de la façon dont vous voulez effectuer votre retournement, mais de toute façon) mais vous ne devez créer votre img2 "en dehors" de votre boucle for qu'une seule fois.

def flipv(imgg):
    img2= np.zeros([480, 640, 3], np.uint8)
    for i in range(480):

        img2[i,:]=imgg[480-i-1,:]

    return img2
3
unlut

Vous pouvez utiliser la diffusion de tableaux comme indiqué ci-dessous. C'est beaucoup plus rapide:

cv2.imshow("flipped image", im[::-1])
3
Jeru Luke

Fonction simple pour retourner des images en utilisant l'opencv:

def flip(img,axes):
    if (axes == 0) :
        #horizental flip
        return cv2.flip( img, 0 )
    Elif(axes == 1):
        #vertical flip
        return cv2.flip( img, 1 )
    Elif(axes == -1):
        #both direction
        return cv2.flip( img, -1 ) 
bflp = flip(img,-1)
plt.imshow(bflp)
1
fati heidari