首页 > 解决方案 > 在Python中垂直翻转图像而不使用flip()方法

问题描述

我试图在不使用任何默认翻转()或类似函数的情况下垂直翻转图像。我尝试沿像素迭代并通过使用循环尝试反转它,以便我可以垂直翻转图像。

image=cv2.imread('boat.jpg',1)
height,width,channel=image.shape
list1=[]
list2=[]
for i in range(height):
    for j in range(width):
        list1.append(image[i,j])
for a in range(len(list1)-1,-1,-1):
     list2.append(list1[a])
b=0
for i in range(height):
    for j in range(width):
        image[i,j]=list2[b]
        b+=1

但是翻转的图像看起来像这样:https ://ibb.co/KKVkd2d 我做错了什么?

标签: pythonopencvcv2

解决方案


要垂直翻转,您必须反转数组中的行 - 第一行必须是最后一行,最后一行必须是第一行。您不必逐行移动像素。

import cv2
import numpy 

image = cv2.imread('boat.jpg', 1)

image = numpy.array(list(reversed(image)))

cv2.imshow('window', image)

cv2.waitKey(0)

顺便说一句:如果要水平翻转,则必须逐行反转像素。

import cv2
import numpy 

image = cv2.imread('boat.jpg', 1)

image = numpy.array([list(reversed(row)) for row in image])

cv2.imshow('window', image)

cv2.waitKey(0)

推荐阅读