Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Grundläggande Transformationer | Bildbehandling med OpenCV
Grunder i Datorseende

bookGrundläggande Transformationer

Note
Definition

OpenCV (Open Source Computer Vision Library) är ett kraftfullt öppen källkod-bibliotek utformat för realtids datorseende och bildbehandling. Det tillhandahåller verktyg för att manipulera bilder, detektera objekt och även arbeta med djupinlärningsmodeller.

Läsa in och visa en bild

Innan transformationer utförs, läs in och visa en bild med OpenCV. Fotot har redan importerats. Men på din lokala dator, för enkel inläsning och visning av fotot, använd:

import cv2

image = cv2.imread('path/to/image.jpg')
cv2.imshow('Image title', image)

Ändra storlek på en bild

Storleksändring är användbart för att skala bilder upp eller ner samtidigt som bildens förhållande (fx och fy parametrar) bibehålls, där fx och fy definierar skalningsfaktorn för bredd och höjd.

resized_image = cv2.resize(image, fx=0.7, fy=0.5)

Du kan också ange exakta pixeldimensioner (dsize-parametern), där dsize är (new_y, new_x) för utdataformatet.

resized = cv2.resize(image, (100, 100))

Rotera en bild

För att rotera en bild med en specifik vinkel används cv2.getRotationMatrix2D() och cv2.warpAffine().

  • cv2.getRotationMatrix2D(center, angle, scale) definierar rotationsmatrisen;
  • cv2.warpAffine(image, matrix, output_size) tillämpar transformationen.
height, width = image.shape[:2]
centre = (width // 2, height // 2)

rotation_matrix = cv2.getRotationMatrix2D(centre, 180, 1)
rotated = cv2.warpAffine(image, rotation_matrix, (width, height))

Beskära en bild

Beskärning extraherar ett specifikt område från en bild. Detta görs med NumPy-slicing. Syntaxen image[start_y:end_y, start_x:end_x] väljer ett intresseområde.

cropped = image[450:500, 250:350]
Uppgift

Swipe to start coding

Du har fått en image:

  • Ändra storlek på bilden till (100, 100) och spara den i variabeln resized;
  • Extrahera height och width från bilden;
  • Beräkna center av height och width;
  • Skapa en rotationsmatris och spara den i variabeln rotation_matrix;
  • Rotera bilden 90 grader medurs och spara den i variabeln rotated;
  • Beskär området X: 250-600 och Y: 100-450 från bilden och spara det i variabeln cropped.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 1
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

close

Awesome!

Completion rate improved to 3.45

bookGrundläggande Transformationer

Svep för att visa menyn

Note
Definition

OpenCV (Open Source Computer Vision Library) är ett kraftfullt öppen källkod-bibliotek utformat för realtids datorseende och bildbehandling. Det tillhandahåller verktyg för att manipulera bilder, detektera objekt och även arbeta med djupinlärningsmodeller.

Läsa in och visa en bild

Innan transformationer utförs, läs in och visa en bild med OpenCV. Fotot har redan importerats. Men på din lokala dator, för enkel inläsning och visning av fotot, använd:

import cv2

image = cv2.imread('path/to/image.jpg')
cv2.imshow('Image title', image)

Ändra storlek på en bild

Storleksändring är användbart för att skala bilder upp eller ner samtidigt som bildens förhållande (fx och fy parametrar) bibehålls, där fx och fy definierar skalningsfaktorn för bredd och höjd.

resized_image = cv2.resize(image, fx=0.7, fy=0.5)

Du kan också ange exakta pixeldimensioner (dsize-parametern), där dsize är (new_y, new_x) för utdataformatet.

resized = cv2.resize(image, (100, 100))

Rotera en bild

För att rotera en bild med en specifik vinkel används cv2.getRotationMatrix2D() och cv2.warpAffine().

  • cv2.getRotationMatrix2D(center, angle, scale) definierar rotationsmatrisen;
  • cv2.warpAffine(image, matrix, output_size) tillämpar transformationen.
height, width = image.shape[:2]
centre = (width // 2, height // 2)

rotation_matrix = cv2.getRotationMatrix2D(centre, 180, 1)
rotated = cv2.warpAffine(image, rotation_matrix, (width, height))

Beskära en bild

Beskärning extraherar ett specifikt område från en bild. Detta görs med NumPy-slicing. Syntaxen image[start_y:end_y, start_x:end_x] väljer ett intresseområde.

cropped = image[450:500, 250:350]
Uppgift

Swipe to start coding

Du har fått en image:

  • Ändra storlek på bilden till (100, 100) och spara den i variabeln resized;
  • Extrahera height och width från bilden;
  • Beräkna center av height och width;
  • Skapa en rotationsmatris och spara den i variabeln rotation_matrix;
  • Rotera bilden 90 grader medurs och spara den i variabeln rotated;
  • Beskär området X: 250-600 och Y: 100-450 från bilden och spara det i variabeln cropped.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 1
single

single

some-alt