python - 使用 numpy 增强图像 Python cv2 的数组操作
问题描述
给定 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 是步长。
如果没有给出 i,则默认为 0
如果没有给出 j,则默认为 n
写作[: : -1]
,省略i
and j
,并设置k
为-1
。
语法的意思是:“从 index0
中取出所有元素,使用 step -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
.
在多帧的情况下,第一个索引通常应用帧数。
推荐阅读
- node.js - 如何在同一时间mongodb上处理来自同一产品集合的不同用户对同一productId的更新请求
- python - 有人可以对参数 var_smoothing 对 scikit 中的 GaussianNB 的作用给出一个很好的数学/统计解释吗?
- c# - 时间戳的实体框架核心问题?无法将实体插入数据库
- python - Python - 在 Pandas 数据框中计算非字母数字字符
- rust - 为什么 Vec::iter_mut 没有出现在 std::vec::Vec 的文档索引中?
- java - mongodb java过滤器问题与numberlong
- sql - 在 SEDE(Stack Exchange 数据资源管理器)中获取所有带有自我接受答案的帖子
- javascript - 如何在Vue JS中通过v-model检查输入框是否为空?
- html - JavaScript React Redux:数据库中的字段未在网页中呈现并且无法在下拉菜单中选择值
- bash - 如何在启用 FIPS 的 RedHat6 服务器上禁用 OpenSSL md5 散列