使用OpenCV和Python進行汽車圖像校正

ULWAB 數碼 13

本文將介紹如何使用OpenCV和Python進行汽車圖像校正,包括圖像的旋轉、平移、裁剪以及透視變換。

對於汽車圖像,可能會出現拍攝角度不直的情況,需要進行圖像旋轉來糾正。可以使用OpenCV中的getRotationMatrix2D函數進行旋轉操作。

import cv2

img = cv2.imread("car.jpg")
(h, w) = img.shape[:2]
center = (w // 2, h // 2)
angle = 45
M = cv2.getRotationMatrix2D(center, angle, 1.0)
rotated_img = cv2.warpAffine(img, M, (w, h))

cv2.imshow("Rotated image", rotated_img)
cv2.waitKey(0)

以上代碼中,我們首先讀取了一張car.jpg的汽車圖像,然後計算了圖像的中心點。接著定義了需要旋轉的角度,以及使用getRotationMatrix2D函數得到旋轉矩陣M。最後使用warpAffine函數對圖像進行旋轉操作並顯示。

在圖像校正的過程中,有時需要對圖像進行平移來調整圖像的位置。在OpenCV中,可以使用warpAffine函數與平移矩陣進行圖像平移。

import cv2
import numpy as np

img = cv2.imread("car.jpg")
(h, w) = img.shape[:2]
M = np.float32([[1, 0, 25], [0, 1, 50]])
translated_img = cv2.warpAffine(img, M, (w, h))

cv2.imshow("Translated image", translated_img)
cv2.waitKey(0)

以上代碼中,我們首先讀取了一張car.jpg的汽車圖像,然後定義了平移矩陣M,在這裡將圖像水平和垂直方向上分別移動了25和50個像素。接著使用warpAffine函數對圖像進行平移操作並顯示。

有時候需要對圖像進行裁剪以去除一些不必要的邊緣區域,以便更好地進行校正操作。在OpenCV中,可以利用numpy中的切片操作進行圖像裁剪。

import cv2

img = cv2.imread("car.jpg")
(h, w) = img.shape[:2]
cropped_img = img[50:h-50, 100:w-100]

cv2.imshow("Cropped image", cropped_img)
cv2.waitKey(0)

以上代碼中,我們首先讀取了一張car.jpg的汽車圖像,然後利用切片操作從圖像中裁剪出一個區域,即去除了上下左右各50個像素的區域。接著顯示裁剪後的圖像。

在汽車圖像校正中,有時需要對圖像進行透視變換來改變其形狀。在OpenCV中,可以使用getPerspectiveTransform函數和warpPerspective函數進行透視變換。

import cv2
import numpy as np

img = cv2.imread("car.jpg")
pts1 = np.float32([[56, 65], [368, 52], [28, 387], [389, 390]])
pts2 = np.float32([[0, 0], [300, 0], [0, 300], [300, 300]])
M = cv2.getPerspectiveTransform(pts1, pts2)
perspective_img = cv2.warpPerspective(img, M, (300, 300))

cv2.imshow("Perspective transformation", perspective_img)
cv2.waitKey(0)

以上代碼中,我們首先讀取了一張car.jpg的汽車圖像,然後定義了兩個點集,即原圖像中四個點和變換後圖像中四個點。使用getPerspectiveTransform函數可以得到透視變換矩陣M,然後使用warpPerspective函數對圖像進行透視變換並顯示。

在本文中,我們介紹了如何使用OpenCV和Python進行汽車圖像校正,包括圖像的旋轉、平移、裁剪以及透視變換。這些操作可以幫助我們更好地處理拍攝不正的汽車圖像,並得到更好的校正結果。

回復

共1條回復 我來回復
  • 暫無回復內容