在Python中垂直翻转图像,而不使用flip()方法



我尝试在不使用任何默认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我做错了什么?

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

import cv2
import numpy 
image = cv2.imread('boat.jpg', 1)
image = numpy.array(list(reversed(image)))
cv2.imshow('window', image)
cv2.waitKey(0)

BTW:如果要水平翻转,则必须反转行中的像素。

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)

相关内容

最新更新