Python 语法问题 - 变量名前的冒号

Python syntax question - colon preceding a variable name

我正在使用 OpenCV 学习一些 ML 概念,并且我有一段 python 代码,我需要将其翻译成 C++。我对 python 有非常基本的了解,并且我已经 运行 了解一些我似乎无法找到其含义的语法。

我有一个变量被传递到一个方法(未显示整个方法),它来自 cv2.imread() 的结果,所以是一个图像。在 C++ 中,它的类型是 Mat:

def preprocess_image(img, side = 96):
    min_side = min(img.shape[0], img.shape[1])
    img = img[:min_side, :min_side * 2]

我有几个问题:

  1. 语法“:min_side”的作用是什么?
  2. 这条线在图像方面有什么作用?

行:

img = img[:min_side, :min_side * 2]

正在裁剪图像,使生成的图像的高度为 min_side,宽度为 min_side * 2。变量名前的冒号是 python 的切片语法。观察:

arr = [1, 2, 3, 4, 5, 6]
length = 4
print(arr[:length])

输出:

[1, 2, 3, 4]

:min_side 是 shorthand for 0:min_side 即它生成一个从开始到 min_side 的对象切片。例如:

 f = [2, 4, 5, 6, 8, 9]
 f[:3]  # returns [2,4,5]

img = img[:min_side, :min_side *2] 沿高度从 0min_side 以及从 0 到 [=17= 生成图像裁剪(这是一个 numpy 数组) ] 沿宽度。因此,生成的图像将是宽度 min_side * 2 和高度 min_side 之一。

我假设图像的输入是一个矩阵。在Python中图像一般被读取为numpy矩阵

1.What 语法“:min_side”有什么用?

  • “切片” List/Array 或者基本上在这种情况下,一个矩阵。

2.What那条线是按照图像做的吗?

  • “crops”二维数组(基本上是Matrix/Image)

一个简单的切片示例:

x = np.array([[0, 1, 2],[3, 4, 5], [6, 7, 8]])
print(x)

输出:

array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

在此矩阵上执行切片(图片):

x[:2, :3]

切片后的输出:

array([[0, 1, 2],
       [3, 4, 5]])

阅读更多相关信息的一个很好的来源是直接来自来源:https://docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html