Mit okoznak az alábbi példák?
A feladat kitűzése a Numpy tömb szeletelés részben található.
im[200:, :] = [0, 255, 255]
A 200. sortól lefelé minden sorban és oszlopban sárga lesz a képmátrix szín.
im[:, 300:, 2] = 0
A 300. oszloptól jobbra minden sorban és oszlopban 0 értékű lesz a vörös csatorna értéke, a zöld és a kék változatlan marad.
im[100:120] = 255
Itt a lényeg az, hogy az indexekkel jobbról balra haladva a teljes tartományt kihasználók elhagyhatók. Vagyis az im[100:120, :, :] helyett írható im[100:120].
Mivel a 255 értéket mindhárom csatorna értékül kapja, így fehér szín alakul ki ebben a sávban.
im[:, (im.shape[1] >> 1) - 50 : (im.shape[1] >> 1) + 50] = 220
A mátrix második dimenziója szerinti méretet (oszlopok száma) osztjuk kettővel, vagyis a középső oszloptól balra és jobbra 50 képponttal minden sorban 220 érték (világosszürke) kerül beírásra. Figyeljük meg, hogy itt ki kell írni az első dimenzió szerinti teljes tartományt (:), az most nem hagyható el.
A >> operátor a bitminta léptetés, ami a 2-vel osztás hatást okozza ebben az esetben. Azért használtuk ezt, hogy egész típusú érték maradjon az eredmény, mert a Numpy indexeléshez az kell, és nem akartunk típuskonverziót használni.
Mit látunk a kivágott képrész kapcsán?
A kivágott részkép azért változik meg, mert az im képmátrix-szal egyező területre hivatkoznak, így az im későbbi változása a im_cropped változását is magával hozza.
Az im képmátrix másik helyére bemásolt példány nem változik, mert a részkép tartomány módosítása előtti tartalom került oda bemásolásra, az ott található képpont értékek módosításával. A kivágott részképpel ekkor megszűnik a kapcsolat.