2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python手动实现图像水平 垂直翻转

python手动实现图像水平 垂直翻转

时间:2019-10-27 17:34:34

相关推荐

python手动实现图像水平 垂直翻转

投了个实习要求手动实现这个功能,去看了numpy.flip源码简化了一下。。

首先读入图像是shape(row,column,channel)的array数组

例如实例中输入的

img=np.array([[[0, 0, 0],[1,1,1]],[[2,2,2],[3,3,3]]])

实际上是形如下下图的RGB三维数组

水平翻转:

垂直翻转:

这里我们使用np.s_[:]方法

slice(start,end,step)指的是索引从start到end,间隔为step

np.s_[::-1]指的是倒序排列

因为我们普通图像数组是img.ndim维数组,所以设置index = [np.s_[:]]*img.ndim

三个slice分别对应于每一层数组。

import cv2import numpy as npdef flip(img,axis):index = [np.s_[:]]*img.ndimindex[axis] = np.s_[::-1]index = tuple(index)return img[index]if __name__ == "__main__":img=cv2.imread("coins.jpg")# img=np.array([[[0, 0, 0],[1,1,1]],[[2,2,2],[3,3,3]]])cv2.imshow("img",img)#axis=0水平翻转#axis=1垂直翻转cv2.imshow("flip",flip(img,2))# print(flip(img,0))# print(flip(img,1))cv2.waitKey(0)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。