
U suvremenom svijetu slike su bitan dio komunikacije i tehnologije. S napretkom umjetne inteligencije, strojnog učenja i računalnog vida, postalo je sve važnije razumjeti kako učinkovito obrađivati slike i manipulirati njima. Ovaj članak govori o prevladavajućem problemu – promjeni veličine slika i njihovom uklapanju u NumPy polje pomoću OpenCV-a, popularne knjižnice računalnog vida otvorenog koda. Ići ćemo u dubinu, pružajući sustavan pristup, objašnjavajući kod korak po korak dok ćemo spominjati uključene biblioteke i funkcije te njihov značaj za problem koji je pri ruci.
Uvod
Slike se pohranjuju kao matrice koje sadrže intenzitet piksela. Kako bi učinkovito radili sa slikovnim podacima, programeri često moraju promijeniti veličinu slike kako bi je uklopili u NumPy niz prema svojim zahtjevima. Jedna od najboljih biblioteka za postizanje toga je OpenCV, koja besprijekorno zadovoljava različite potrebe obrade slika. U ovom ćemo članku pokazati kako promijeniti veličinu slike i uklopiti je u NumPy polje pomoću Pythona i OpenCV-a.
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: Knjižnica NumPy pruža podršku za učinkovit rad s nizovima i matricama.
Učitavanje i promjena veličine slike
Prvo moramo učitati sliku, a zatim joj promijeniti veličinu pomoću funkcije OpenCV 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 s navedene putanje datoteke.
- nova_veličina: Torka koja sadrži željenu širinu i visinu slike promijenjene veličine. U ovom slučaju, želimo promijeniti veličinu na 300×300 piksela.
- cv2.resize(): Mijenja veličinu slike na određene dimenzije pomoću određene metode interpolacije.
Uklapanje slike promijenjene veličine u NumPy polje
Nakon što se promijeni veličina slike, moramo je uklopiti u NumPy polje:
# 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
- oblik_niza: Torka koja sadrži željene dimenzije za polje NumPy. Mora imati istu širinu, visinu i broj kanala kao naša promijenjena veličina slike.
- np.nule(): Ova funkcija stvara prazan NumPy niz s navedenim dimenzijama i vrstom podataka.
- dtype: Definira tip podataka NumPy polja.
np.uint8
predstavlja 8-bitni cijeli broj bez predznaka, koji se obično koristi za slikovne podatke.
Nakon dovršetka ovih koraka, slika je sada promijenjena u veličini i stane u NumPy niz, spremna za daljnju obradu.
Dodatne OpenCV funkcije i tehnike
Evo nekih dodatnih OpenCV funkcija i tehnika koje se odnose na promjenu veličine slika:
- cv2.INTER_LINEAR: Koristi se za zadanu interpolaciju u
cv2.resize()
. - cv2.INTER_CUBIC: Omogućuje promjenu veličine bolje kvalitete za povećanje veličine. Sporiji je u usporedbi s drugim metodama interpolacije.
- cv2.INTER_NEAREST: Najbrži način za promjenu veličine. Međutim, kvaliteta se smanjuje zbog izostanka interpolacije.
- Razmatranja omjera slike: Prilikom promjene veličine ključno je zadržati omjer širine i visine slike, u protivnom se slika može izobličiti.
Ukratko, pokazali smo kako promijeniti veličinu slike i uklopiti je u NumPy niz pomoću OpenCV-a. Slijedeći navedene korake, programeri mogu učinkovito manipulirati slikama za različite računalne vidove, strojno učenje i druge aplikacije.