我只想在没有cv2.flip()
的情况下垂直翻转图像,但是输出是完全黑色的图像。我的错误在哪里?
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()
答案 0 :(得分:4)
您的翻转代码是正确的(取决于您想要执行翻转的方式,但是无论如何),但是您应该仅在一次for循环的img2“外部”创建一次。
def flipv(imgg):
img2= np.zeros([480, 640, 3], np.uint8)
for i in range(480):
img2[i,:]=imgg[480-i-1,:]
return img2
答案 1 :(得分:3)
您可以如下所示使用阵列的广播。它快很多了:
cv2.imshow("flipped image", im[::-1])
答案 2 :(得分:3)
使用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)
答案 3 :(得分:0)