Změna velikosti obrázku se týká změny měřítka obrázků. Škálování se hodí v mnoha aplikacích pro zpracování obrazu a také v aplikacích strojového učení. Pomáhá při snižování počtu pixelů z obrázku a to má několik výhod, např. Může zkrátit dobu trénování neuronové sítě, protože čím větší je počet pixelů v obrázku, tím více je počet vstupních uzlů, což zase zvyšuje složitost modelu.
Pomáhá také při přibližování obrázků. Mnohokrát potřebujeme změnit velikost obrázku, tj. buď jej zmenšit nebo zvětšit, aby vyhovoval požadavkům na velikost. OpenCV nám poskytuje několik interpolačních metod pro změnu velikosti obrázku.
Volba metody interpolace pro změnu velikosti:
- cv2.INTER_AREA: Používá se, když potřebujeme zmenšit obrázek.
- cv2.INTER_CUBIC: Toto je pomalé, ale efektivnější.
- cv2.INTER_LINEAR: Toto se primárně používá, když je vyžadováno přiblížení. Toto je výchozí interpolační technika v OpenCV.
Syntax: cv2.resize(zdroj, dsize, cíl, fx, fy, interpolace)
Parametry:
- zdroj: Pole vstupních obrázků (jednokanálové, 8bitové nebo s plovoucí desetinnou čárkou) dsize: Velikost výstupního pole dest: Výstupní pole (Podobné rozměrům a typu pole vstupních obrázků) [volitelné] fx: Faktor měřítka podél horizontální osa [volitelné] fy: Měřítko podél svislé osy [volitelné] interpolace: Jedna z výše uvedených metod interpolace [volitelné]
Níže je uveden kód pro změnu velikosti:
Python3
import> cv2> import> numpy as np> import> matplotlib.pyplot as plt> image>=> cv2.imread(r>'D:simsebsim21EB-ML-06-10-2022-Test-Output-15PERFORATIONOverkillFailBlister 1 2022-03-12 12-59-43.859 T0 M0 G0 3 PERFORATION Mono.bmp'>,>1>)> # Loading the image> half>=> cv2.resize(image, (>0>,>0>), fx>=> 0.1>, fy>=> 0.1>)> bigger>=> cv2.resize(image, (>1050>,>1610>))> stretch_near>=> cv2.resize(image, (>780>,>540>),> >interpolation>=> cv2.INTER_LINEAR)> Titles>=>[>'Original'>,>'Half'>,>'Bigger'>,>'Interpolation Nearest'>]> images>=>[image, half, bigger, stretch_near]> count>=> 4> for> i>in> range>(count):> >plt.subplot(>2>,>2>, i>+> 1>)> >plt.title(Titles[i])> >plt.imshow(images[i])> plt.show()> |
>
>
Výstup:

Poznámka: Jedna věc, kterou je třeba mít na paměti při používání funkce cv2.resize() je, že n-tice předaná pro určení velikosti nového obrázku (v tomto případě (1050, 1610)) sleduje pořadí (šířka, výška) na rozdíl od očekávání ( výška, šířka).