前言
numpy中的repeat函数顾名思义,可以将给定的数组沿着指定的轴重复多次,生成一个新的数组。但具体如何重复呢?本次博文就来探讨并试图回答这个问题,感兴趣的小伙伴可以继续阅读下去,希望对你有所启示~
numpy中的repeat函数 和 numpy数组的repeat方法
纯粹的文字说明不太直观,小编更倾向用代码工具进行直观展示。首先生成一个大小为256×256的原始图像:
import numpy as np
import cv2
img1 = np.zeros((256, 256), dtype=np.uint8) # 创建一个大小为256*256的全黑图像
img[16:112,118:138] = 255 # 第17-112行,119-138列的像素由黑变白 (索引从0开始)
img[144:-16,118:138] = 255 # # 第145-倒数第16行,119-138列的像素由黑变白
cv2.imshow('img', img) # 展示图像
cv2.waitKey(0) # 显示图像
结果如下:
将原始图像沿着【纵轴】重复3次
代码如下:
import numpy as np
import cv2
img1 = np.zeros((256, 256), dtype=np.uint8) # 创建一个大小为256*256的全黑图像
img[16:112,118:138] = 255 # 第17-112行,119-138列的像素由黑变白 (索引从0开始)
img[144:-16,118:138] = 255 # # 第145-倒数第16行,119-138列的像素由黑变白
# (256, 256) ---> (768, 256)
# 方案1 numpy数组的repeat方法
img = img.repeat(repeats=3, axis=0) # axis=0 代表沿【纵轴】方向将【每行】依次重复3次
# 方案2 numpy数组的repeat函数
img = np.repeat(img, repeats=3, axis=0)
cv2.imshow('img', img) # 展示图像
cv2.waitKey(0) # 显示图像
运行结果如下:
从生成的新图像可以看出,numpy的repeat函数是沿着纵轴方向,对每行像素依次复制2遍(要求新图像重复3次,那么只需要复制2遍)。
将原始图像沿着【横轴】重复3次
import numpy as np
import cv2
img1 = np.zeros((256, 256), dtype=np.uint8) # 创建一个大小为256*256的全黑图像
img[16:112,118:138] = 255 # 第17-112行,119-138列的像素由黑变白 (索引从0开始)
img[144:-16,118:138] = 255 # # 第145-倒数第16行,119-138列的像素由黑变白
# (256, 256) ---> (256, 768)
# 方案1 numpy数组的repeat方法
img = img.repeat(repeats=3, axis=1) # axis=1 代表沿【横轴】方向将【每列】依次重复3次
# 方案2 numpy数组的repeat函数
img = np.repeat(img, repeats=3, axis=1)
cv2.imshow('img', img) # 展示图像
cv2.waitKey(0) # 显示图像
运行结果如下:
从生成的新图像可以看出,numpy的repeat函数是沿着横轴方向,对每列像素依次复制2遍。
By the way
如果本博文对你有所帮助,可以点个赞/收藏支持一下,如果能够持续关注,小编感激不尽~
小编会坚持创作,持续优化博文质量,以小见大,给读者带来更好de阅读体验~