我在一个堆栈溢出问题(https://stackoverflow.com/a/53737420)的答案中遇到了这行代码:
trans_mask = image[:,:,3] == 0
这将从OpenCV图像创建遮罩。我想知道image[:,:,3] == 0
的语法是如何工作的。
我知道list[:]
基本上是一个列表的副本,但我不知道可以传递一个元组(我相信这就是:,:,3
)来索引一个列表。然后把这个比作0?
我在一个堆栈溢出问题(https://stackoverflow.com/a/53737420)的答案中遇到了这行代码:
trans_mask = image[:,:,3] == 0
这将从OpenCV图像创建遮罩。我想知道image[:,:,3] == 0
的语法是如何工作的。
我知道list[:]
基本上是一个列表的副本,但我不知道可以传递一个元组(我相信这就是:,:,3
)来索引一个列表。然后把这个比作0?
1条答案
按热度按时间thtygnil1#
当对类似列表的对象进行索引时,将调用
__getitem__
方法。您可以创建一个简单的类,向您展示传递给该方法的内容:这意味着
:
由slice
示例表示。与0的比较也是如此:Python调用eq运算符。因此,问题中的
__getitem__
调用将返回另一个NumPy数组,该数组实现__eq__
方法,该方法进而实现向其传递标量值,并将创建表示掩码的特定数据结构。因此,掩码只是一个包含布尔值的数字数组。