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

Ene*_*gan 4 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()
Run Code Online (Sandbox Code Playgroud)

小智 6

使用 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)
Run Code Online (Sandbox Code Playgroud)

  • 或者你可以只设置 `flip = cv2.flip`,而不需要在其上编写额外的包装器:) (6认同)

unl*_*lut 5

您的翻转代码是正确的(取决于您想要如何执行翻转,但无论如何),但您应该只在 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
Run Code Online (Sandbox Code Playgroud)


Jer*_*uke 5

您可以如下所示使用数组广播。它快得多了:

cv2.imshow("flipped image", im[::-1])
Run Code Online (Sandbox Code Playgroud)