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()
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
Vous pouvez utiliser la diffusion de tableaux comme indiqué ci-dessous. C'est beaucoup plus rapide:
cv2.imshow("flipped image", im[::-1])
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)