Løst: endre størrelsen på bildet og legg det inn i numpy array opencv

I den moderne verden er bilder en viktig del av kommunikasjon og teknologi. Med fremskrittene innen kunstig intelligens, maskinlæring og datasyn, har det blitt stadig viktigere å forstå hvordan man behandler og manipulerer bilder effektivt. Denne artikkelen diskuterer et utbredt problem – endre størrelse på bilder og tilpasse dem i en NumPy-matrise ved hjelp av OpenCV, et populært datasynbibliotek med åpen kildekode. Vi vil gå i dybden, gi en systematisk tilnærming, forklare koden trinn for trinn samtidig som vi nevner involverte biblioteker og funksjoner, og deres betydning for problemet.

Introduksjon

Bilder lagres som matriser som inneholder pikselintensiteter. For å jobbe effektivt med bildedata, må utviklere ofte endre størrelsen på et bilde for å passe det inn i en NumPy-matrise i henhold til deres krav. Et av de beste bibliotekene for å oppnå dette er OpenCV, som sømløst dekker ulike bildebehandlingsbehov. I denne artikkelen vil vi demonstrere hvordan du endrer størrelsen på et bilde og passer det inn i en NumPy-matrise ved hjelp av Python og OpenCV.

Importerer påkrevde biblioteker

For å starte, må vi importere de nødvendige bibliotekene til Python-miljøet vårt.

import cv2
import numpy as np
  • cv2: OpenCV-biblioteket som brukes til bildebehandlingsoppgaver.
  • nuss: NumPy-biblioteket gir støtte for å arbeide effektivt med matriser og matriser.

Laste inn og endre størrelse på bildet

Først må vi laste inn bildet og deretter endre størrelsen på det ved hjelp av OpenCV-funksjonen 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(): Denne funksjonen leser et bilde fra den angitte filbanen.
  • ny_størrelse: En tuppel som inneholder ønsket bredde og høyde på bildet som har endret størrelse. I dette tilfellet ønsker vi å endre størrelsen på den til 300×300 piksler.
  • cv2.resize(): Den endrer størrelsen på bildet til de angitte dimensjonene ved hjelp av en spesifisert interpolasjonsmetode.

Tilpasse det endrede størrelsesbildet til en NumPy-array

Når bildet er endret, må vi passe det inn i en NumPy-matrise:

# 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: En tuppel som inneholder de ønskede dimensjonene for NumPy-matrisen. Den må ha samme bredde, høyde og antall kanaler som bildet vårt med endret størrelse.
  • np.zeros(): Denne funksjonen oppretter en tom NumPy-matrise med de angitte dimensjonene og datatypen.
  • dtype: Den definerer datatypen til NumPy-matrisen. np.uint8 representerer 8-bits usignert heltall, som vanligvis brukes for bildedata.

Etter å ha fullført disse trinnene, endres størrelsen på bildet og passer inn i en NumPy-matrise, klar for videre behandling.

Ytterligere OpenCV-funksjoner og -teknikker

Her er noen ekstra OpenCV-funksjoner og teknikker relatert til å endre størrelse på bilder:

  • cv2.INTER_LINEAR: Brukes for standard interpolering i cv2.resize().
  • cv2.INTER_CUBIC: Gir bedre kvalitet på endring av størrelse for oppskalering. Det er tregere sammenlignet med andre interpoleringsmetoder.
  • cv2.INTER_NEAREST: Raskeste metode for å endre størrelse. Kvaliteten forringes imidlertid på grunn av fravær av interpolering.
  • Betraktninger om sideforhold: Når du endrer størrelse, er det avgjørende å bevare sideforholdet, hvis ikke, kan bildet bli forvrengt.

Oppsummert har vi demonstrert hvordan du endrer størrelsen på et bilde og passer det inn i en NumPy-matrise ved hjelp av OpenCV. Ved å følge de skisserte trinnene kan utviklere effektivt manipulere bilder for ulike datasyn, maskinlæring og andre applikasjoner.

Relaterte innlegg:

Legg igjen en kommentar