如何使用opencv和python翻转图像(不带cv2.flip)

时间:2018-07-14 19:37:19

标签: python opencv

我只想在没有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()

4 个答案:

答案 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)

使用numpy.flip:

flip_v = np.flip(img,0)
flip_h = np.flip(img,1)

s.a .: numpy.flip