-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