-3
我不明白这行代码在做什么。试图理解布尔数组索引
image[harris_corners > 0.025*harris_corners.max()] = [255,127,127]
这将是巨大的,如果我能得到一个等效代码。
我不明白这行代码在做什么。试图理解布尔数组索引
image[harris_corners > 0.025*harris_corners.max()] = [255,127,127]
这将是巨大的,如果我能得到一个等效代码。
我真的很喜欢numpy语法,因为它可以一步一步理解它。
为了理解:
image[harris_corners > 0.025*harris_corners.max()] = [255,127,127]
你可以尝试在Python控制台如下:
harris_corners
harris_corners.max()
0.025*harris_corners.max()
harris_corners > 0.025*harris_corners.max()
image
image[harris_corners > 0.025*harris_corners.max()]
image[harris_corners > 0.025*harris_corners.max()] = [255,127,127]
image
在每一步中,试图了解对象是什么,哪种类型是,它代表什么以及与之前的目标相比有什么变化。
随着伪数据,就变成:
>>> import numpy as np
>>> harris_corners = np.random.randint(20, size=10)
>>> harris_corners
array([14, 18, 3, 7, 19, 2, 16, 19, 2, 3])
>>> harris_corners.max()
19
>>> harris_corners > harris_corners.max() * 0.25
array([ True, True, False, True, True, False, True, True, False, False], dtype=bool)
>>> harris_corners[harris_corners > harris_corners.max() * 0.25]
array([14, 18, 7, 19, 16, 19])
>>> harris_corners[harris_corners > harris_corners.max() * 0.25] = 99
>>> harris_corners
array([99, 99, 3, 99, 99, 2, 99, 99, 2, 3])
基本上,它替换是通过99.
在你的情况下,最大的大于25%的值,元素是RGB像素,而不是整数,但语法和原理是一样的。
它将'harris_corners'大于图像中所有'harris_corners'元素的最大值0.025的位置设置为255红色,127绿色和127蓝色。 –
什么类型的变量是'image'?一个numpy数组? –
在行前打印'image'。在行后面打印'image'。比较。还有问题吗? – timgeb