U modernom svijetu slike su bitan dio komunikacije i tehnologije. Sa napretkom u umjetnoj inteligenciji, strojnom učenju i kompjuterskom vidu, postalo je sve važnije razumjeti kako efikasno obraditi i manipulirati slikama. Ovaj članak govori o preovlađujućem problemu – promjeni veličine slika i njihovom uklapanju u NumPy niz koristeći OpenCV, popularnu biblioteku računarskog vida otvorenog koda. Ići ćemo u dubinu, pružajući sistematski pristup, objašnjavajući kod korak po korak, pominjući uključene biblioteke i funkcije, te njihov značaj za problem koji je u pitanju.
Uvod
Slike se pohranjuju kao matrice koje sadrže intenzitet piksela. Da bi efikasno radili sa slikovnim podacima, programeri često moraju da promene veličinu slike da bi se uklopila u NumPy niz prema njihovim zahtevima. Jedna od najboljih biblioteka za postizanje ovog cilja je OpenCV, koji neprimjetno zadovoljava različite potrebe obrade slika. U ovom članku ćemo pokazati kako promijeniti veličinu slike i uklopiti je u NumPy niz koristeći Python i OpenCV.
Uvoz potrebnih biblioteka
Za početak, moramo uvesti potrebne biblioteke u naše Python okruženje.
import cv2 import numpy as np
- cv2: OpenCV biblioteka koja se koristi za zadatke obrade slika.
- numpy: NumPy biblioteka pruža podršku za efikasan rad sa nizovima i matricama.
Učitavanje i promjena veličine slike
Prvo, moramo učitati sliku, a zatim joj promijeniti veličinu koristeći OpenCV funkciju cv2.resize()
:
# Load the image image = cv2.imread('path/to/image.jpg') # Define the new size (width, height) new_size = (300, 300) # Resize the image resized_image = cv2.resize(image, new_size, interpolation=cv2.INTER_AREA)
- cv2.imread(): Ova funkcija čita sliku sa specificirane putanje datoteke.
- nova_veličina: Tuple koji sadrži željenu širinu i visinu slike promijenjene veličine. U ovom slučaju, želimo da ga promenimo na 300×300 piksela.
- cv2.resize(): On mijenja veličinu slike na određene dimenzije koristeći specificiranu metodu interpolacije.
Ugradnja slike promijenjene veličine u NumPy niz
Kada se veličina slike promijeni, moramo je uklopiti u NumPy niz:
# Create a NumPy array with the desired dimensions (width, height, channels) array_shape = (300, 300, 3) # Fit the resized image into the NumPy array numpy_image = np.zeros(array_shape, dtype=np.uint8) numpy_image[:resized_image.shape[0], :resized_image.shape[1]] = resized_image
- array_shape: Tuple koji sadrži željene dimenzije za NumPy niz. Mora imati istu širinu, visinu i broj kanala kao naša slika promijenjene veličine.
- np.nule(): Ova funkcija kreira prazan NumPy niz sa navedenim dimenzijama i tipom podataka.
- dtype: Definira tip podataka NumPy niza.
np.uint8
predstavlja 8-bitni neoznačeni cijeli broj, koji se obično koristi za slikovne podatke.
Nakon dovršetka ovih koraka, veličina slike je sada promijenjena i uklapa se u NumPy niz, spremna za dalju obradu.
Dodatne OpenCV funkcije i tehnike
Evo nekoliko dodatnih OpenCV funkcija i tehnika koje se odnose na promjenu veličine slika:
- cv2.INTER_LINEAR: Koristi se za podrazumevanu interpolaciju u
cv2.resize()
. - cv2.INTER_CUBIC: Pruža bolju kvalitetnu promjenu veličine za povećanje. Sporije je u odnosu na druge metode interpolacije.
- cv2.INTER_NEAREST: Najbrži metod za promjenu veličine. Međutim, kvalitet se pogoršava zbog odsustva interpolacije.
- Razmatranje omjera: Prilikom promjene veličine, očuvanje omjera je ključno, ako ne, slika može biti izobličena.
Ukratko, pokazali smo kako promijeniti veličinu slike i uklopiti je u NumPy niz koristeći OpenCV. Prateći navedene korake, programeri mogu efikasno manipulisati slikama za različite računarske vidove, mašinsko učenje i druge aplikacije.