logo

Ändra storlek på bild med OpenCV | Pytonorm

Bildstorleksändring avser skalningen av bilder. Skalning kommer väl till pass i många bildbehandlings- och maskininlärningsapplikationer. Det hjälper till att minska antalet pixlar från en bild och det har flera fördelar t.ex. Det kan minska tiden för träning av ett neuralt nätverk eftersom antalet pixlar i en bild fler är antalet ingångsnoder, vilket i sin tur ökar modellens komplexitet.
Det hjälper också att zooma in på bilder. Många gånger behöver vi ändra storlek på bilden, dvs antingen krympa den eller skala upp den för att uppfylla storlekskraven. OpenCV ger oss flera interpolationsmetoder för att ändra storlek på en bild.

Val av interpolationsmetod för storleksändring:



  • cv2.INTER_AREA: Detta används när vi behöver förminska en bild.
  • cv2.INTER_CUBIC: Det här är långsamt men mer effektivt.
  • cv2.INTER_LINEAR: Detta används främst när zoomning krävs. Detta är standardinterpolationstekniken i OpenCV.

Syntax: cv2.resize(källa, dsize, dest, fx, fy, interpolation)

Parametrar:

    källa: Input Image array (enkanals, 8-bitars eller flyttal) dsize: Storlek på output array dest: Output array (Liknande dimensionerna och typen av Input image array) [valfritt] fx: Skalfaktor längs horisontell axel [valfritt] fy: Skalfaktor längs den vertikala axeln [valfritt] interpolation: En av ovanstående interpolationsmetoder [valfritt]

Nedan finns koden för storleksändring:



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

>

>

Produktion:

Notera: En sak att tänka på när du använder funktionen cv2.resize() är att tupeln som skickas för att bestämma storleken på den nya bilden ((1050, 1610) i det här fallet) följer ordningen (bredd, höjd) till skillnad från förväntat ( höjd bredd).