Zmiana rozmiaru obrazu przy użyciu OpenCV | Pyton

Zmiana rozmiaru obrazu przy użyciu OpenCV | Pyton

Zmiana rozmiaru obrazu odnosi się do skalowania obrazów. Skalowanie przydaje się w wielu zastosowaniach związanych z przetwarzaniem obrazu i uczeniem maszynowym. Pomaga w zmniejszeniu liczby pikseli obrazu, co ma kilka zalet, m.in. Może skrócić czas uczenia sieci neuronowej, ponieważ im większa liczba pikseli w obrazie, tym większa jest liczba węzłów wejściowych, co z kolei zwiększa złożoność modelu.
Pomaga także w powiększaniu zdjęć. Wiele razy musimy zmienić rozmiar obrazu, tj. Zmniejszyć go lub powiększyć, aby spełnić wymagania dotyczące rozmiaru. OpenCV zapewnia nam kilka metod interpolacji w celu zmiany rozmiaru obrazu.

Wybór metody interpolacji przy zmianie rozmiaru:

  • cv2.INTER_AREA: Używa się tego, gdy musimy zmniejszyć obraz.
  • cv2.INTER_CUBIC: Jest to powolne, ale bardziej wydajne.
  • cv2.INTER_LINEAR: Jest używany głównie, gdy wymagane jest powiększanie. Jest to domyślna technika interpolacji w OpenCV.

Składnia: cv2.resize(źródło, dsize, dest, fx, fy, interpolacja)

Parametry:

    source: tablica obrazu wejściowego (jednokanałowa, 8-bitowa lub zmiennoprzecinkowa) dsize: rozmiar tablicy wyjściowej dest: tablica wyjściowa (podobna do wymiarów i typu tablicy obrazu wejściowego) [opcjonalnie] fx: współczynnik skali wzdłuż oś pozioma [opcjonalnie] fy: Współczynnik skali wzdłuż osi pionowej [opcjonalnie] interpolacja: Jedna z powyższych metod interpolacji [opcjonalnie]

Poniżej znajduje się kod umożliwiający zmianę rozmiaru:

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

Wyjście:

Notatka: Jedną rzeczą, o której należy pamiętać podczas korzystania z funkcji cv2.resize() jest to, że krotka przekazana do określenia rozmiaru nowego obrazu (w tym przypadku (1050, 1610)) jest zgodna z kolejnością (szerokość, wysokość) inną niż oczekiwano ( wysokość szerokość).