[英]Array Operations to augment image Python cv2 using numpy
鉴于 X 是一个 Numpy 数组 X.shape =(1, 96, 96, 3),基本上是从 CV2 读取的图像。 我正在寻找更简单的增强操作的表达方式。
你能解释一下下面几行代码的作用吗
b=X[:, ::-1, :, :]
c=X[:, ::-1, ::-1, :]
d=X[:, :, ::-1, :]
X[::-1]
索引适用: X
从第一个到最后一个的索引,以-1
为步长。
b=X[:, ::-1, :, :]
- 向上/向下反转图像。c=X[:, ::-1, ::-1, :]
- 向上/向下和向左/向右反转图像。d=X[:, :, ::-1, :]
- 左右反转图像。 评论:
::
不是运算符,它实际上是两个:
运算符一个接一个。
X[::-1]
与X[ : : -1]
。
请参阅索引文档。
基本的切片语法是 i:j:k,其中 i 是起始索引,j 是停止索引,k 是步长。
如果没有给我它默认为 0
如果没有给出 j 则默认为 n
编写[: : -1]
,省略i
和j
,并将k
设置为-1
。
语法的意思是:“从索引0
,取所有元素,步骤为-1
”,即以相反的顺序给出所有元素(沿该轴的所有元素)。
例子:
import cv2
import numpy as np
# Build input:
im = cv2.imread('chelsea.png')
im = cv2.resize(im, (96, 96))
X = np.empty((1, im.shape[0], im.shape[1], im.shape[2])).astype(np.uint8)
X[0, :, :, :] = im
b = X[:, ::-1, :, :]
c = X[:, ::-1, ::-1, :]
d = X[:, :, ::-1, :]
结果:
笔记:
我有点忽略了拳头索引,因为维度是1
。
在多帧的情况下,第一个索引通常会应用帧数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.