logo

Zmena veľkosti obrázka pomocou OpenCV | Python

Zmena veľkosti obrázka sa týka zmeny mierky obrázkov. Škálovanie je užitočné v mnohých aplikáciách na spracovanie obrazu, ako aj v aplikáciách strojového učenia. Pomáha pri znižovaní počtu pixelov z obrázka a to má niekoľko výhod, napr. Môže skrátiť čas trénovania neurónovej siete, pretože čím väčší je počet pixelov v obraze, tým väčší je počet vstupných uzlov, čo zase zvyšuje zložitosť modelu.
Pomáha tiež pri priblížení obrázkov. Mnohokrát potrebujeme zmeniť veľkosť obrázka, t. j. buď ho zmenšiť, alebo zväčšiť, aby spĺňal požiadavky na veľkosť. OpenCV nám poskytuje niekoľko interpolačných metód na zmenu veľkosti obrázka.

Výber metódy interpolácie na zmenu veľkosti:



firma vs
  • cv2.INTER_AREA: Používa sa, keď potrebujeme zmenšiť obrázok.
  • cv2.INTER_CUBIC: Toto je pomalé, ale efektívnejšie.
  • cv2.INTER_LINEAR: Toto sa používa najmä vtedy, keď je potrebné priblíženie. Toto je predvolená interpolačná technika v OpenCV.

Syntax: cv2.resize(zdroj, dsize, dest, fx, fy, interpolácia)

Parametre:

    zdroj: Pole vstupných obrázkov (jednokanálové, 8-bitové alebo s pohyblivou rádovou čiarkou) dsize: Veľkosť cieľového výstupného poľa: Výstupné pole (Podobné rozmerom a typu poľa vstupných obrázkov) [voliteľné] fx: Faktor mierky pozdĺž horizontálna os [voliteľné] fy: Faktor mierky pozdĺž zvislej osi [voliteľné] interpolácia: Jedna z vyššie uvedených metód interpolácie [voliteľné]

Nižšie je uvedený kód na zmenu veľkosti:



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()>

>

pre každý strojopis
>

Výkon:

Poznámka: Jedna vec, ktorú treba mať na pamäti pri používaní funkcie cv2.resize() je, že n-tica odovzdaná na určenie veľkosti nového obrázka (v tomto prípade (1050, 1610)) sleduje poradie (šírka, výška) na rozdiel od očakávaní ( výška šírka).