繁体   English   中英

使用 numpy 增强图像 Python cv2 的数组操作

[英]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] ,省略ij ,并将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, :]

结果:

我是:
在此处输入图片说明

乙:
在此处输入图片说明

C:
在此处输入图片说明

d:
在此处输入图片说明


笔记:
我有点忽略了拳头索引,因为维度是1
在多帧的情况下,第一个索引通常会应用帧数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM