logo

Het formaat van afbeeldingen wijzigen met OpenCV | Python

Het formaat van afbeeldingen verwijst naar het schalen van afbeeldingen. Schalen is handig bij veel beeldverwerkings- en machine learning-toepassingen. Het helpt bij het verminderen van het aantal pixels van een afbeelding en dat heeft verschillende voordelen, b.v. Het kan de trainingstijd van een neuraal netwerk verkorten, aangezien hoe meer pixels in een afbeelding het aantal invoerknooppunten is, wat op zijn beurt de complexiteit van het model vergroot.
Het helpt ook bij het inzoomen op afbeeldingen. Vaak moeten we het formaat van de afbeelding wijzigen, d.w.z. verkleinen of vergroten om aan de formaatvereisten te voldoen. OpenCV biedt ons verschillende interpolatiemethoden voor het wijzigen van het formaat van een afbeelding.

Keuze van de interpolatiemethode voor het wijzigen van de grootte:



  • cv2.INTER_AREA: Dit wordt gebruikt wanneer we een afbeelding moeten verkleinen.
  • cv2.INTER_CUBIC: Dit is langzaam maar efficiënter.
  • cv2.INTER_LINEAR: Dit wordt voornamelijk gebruikt wanneer zoomen vereist is. Dit is de standaardinterpolatietechniek in OpenCV.

Syntaxis: cv2.resize(bron, dsize, dest, fx, fy, interpolatie)

Parameters:

    source: Input Image array (Single-channel, 8-bit of floating-point) dsize: Grootte van de output array dest: Output array (vergelijkbaar met de afmetingen en het type van de Input image array) [optioneel] fx: Schaalfactor langs de horizontale as [optioneel] fy: schaalfactor langs de verticale as [optioneel] interpolatie: een van de bovenstaande interpolatiemethoden [optioneel]

Hieronder vindt u de code voor het wijzigen van het formaat:



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

>

>

Uitgang:

Opmerking: Eén ding om in gedachten te houden tijdens het gebruik van de functie cv2.resize() is dat de tuple die wordt doorgegeven voor het bepalen van de grootte van de nieuwe afbeelding ((1050, 1610) in dit geval) de volgorde (breedte, hoogte) volgt, anders dan verwacht ( hoogte breedte).