在計算機(jī)視覺和圖像處理領(lǐng)域,透視變換是一個強(qiáng)大的工具。它允許我們改變圖像的視角以獲得新的視點,通常用于校正扭曲或模擬不同的相機(jī)角度。本文將探討一個 Python 腳本,該腳本使用計算機(jī)視覺領(lǐng)域流行的 OpenCV 庫對圖像執(zhí)行透視變換。我們將詳細(xì)介紹該腳本的工作原理以及如何將其用于圖像處理任務(wù)。
理解腳本
加載圖像:
腳本首先使用 OpenCV 的函數(shù)加載圖像**cv2.imread
**。它檢查圖像是否正確加載,以避免后續(xù)步驟中出現(xiàn)錯誤。
設(shè)置源點和目標(biāo)點:
該腳本定義兩組點 - 源 ( src_points
) 和目標(biāo) ( dst_points
)。源點是原始圖像上的坐標(biāo),而目標(biāo)點是這些點在變換圖像中應(yīng)位于的位置。這類似于在地圖上標(biāo)記點,然后決定它們在新地圖上的位置。
**計算透視變換矩陣:cv2.getPerspectiveTransform
**腳本
使用該函數(shù)計算變換矩陣。該矩陣就像一組指令,用于將每個像素從其原始位置移動到新位置。
應(yīng)用變換:
然后,腳本使用 將此矩陣應(yīng)用于原始圖像**cv2.warpPerspective
**。這一步是實際變換發(fā)生的地方,根據(jù)定義的點重塑圖像。
調(diào)整圖像大?。?/strong>
轉(zhuǎn)換后,腳本將圖像大小調(diào)整為其原始尺寸。這類似于調(diào)整相機(jī)的縮放級別以更好地查看變換后的圖像。
顯示和保存圖像:
最后,腳本在窗口中顯示轉(zhuǎn)換后的圖像并將其保存為新文件。這使您可以直觀地驗證轉(zhuǎn)換并保留結(jié)果以供進(jìn)一步使用。
詳細(xì)代碼:
import cv2
import numpy as np
# Load the image
image = cv2.imread(r'192.168.1.41_01_20230919175221813.jpg')
if image is None:
print("Error loading image!")
exit()
height, width, _ = image.shape
# Define the 4 corners of the image
src_points = np.array([
[799, 222], [1036, 195], # 第一行
[537, 1024], [1228, 992] # 最后一行
], dtype=np.float32)
# Define the corresponding 4 points on the ground in world coordinates
dst_points = np.array([
[0, 0],[400, 0],
[0, 1680],[400, 1680]
], dtype=np.float32)
# Compute the perspective trans matrix
M = cv2.getPerspectiveTransform(src_points, dst_points)
# Apply the transformation
transformed_image = cv2.warpPerspective(image, M, (400, 1680))
frame =transformed_image
# 縮放圖像
scale_percent = 100# 縮放到原來的200%
width = int(frame.shape[1] * scale_percent / 100)
height = int(frame.shape[0] * scale_percent / 100)
dim = (width, height)
resized_frame = cv2.resize(frame, dim, interpolation=cv2.INTER_AREA)
cv2.imshow("frame", resized_frame)
cv2.waitKey(0)
cv2.destroyAllWindows()
#保存為圖片
cv2.imwrite('1111111111111.jpg', resized_frame)
print("保存成功")
進(jìn)一步探索:
為了擴(kuò)大您的理解,您可以考慮:文章來源:http://www.zghlxwxcb.cn/news/detail-823027.html
- 嘗試不同的源點和目標(biāo)點集,看看它們?nèi)绾斡绊懽儞Q后的圖像。
- 探索 OpenCV 中可用的其他圖像變換,例如仿射變換。
- 將此腳本集成到更大的應(yīng)用程序中,例如用于實時校正相機(jī)失真的自動化系統(tǒng)。
該腳本演示了 OpenCV 和 Python 在處理圖像方面的強(qiáng)大功能。通過理解和使用透視變換,您可以顯著增強(qiáng)圖像處理能力,無論是校正扭曲、提高視覺美感還是為機(jī)器學(xué)習(xí)任務(wù)準(zhǔn)備圖像。文章來源地址http://www.zghlxwxcb.cn/news/detail-823027.html
到了這里,關(guān)于在 Python 中使用 OpenCV 通過透視校正轉(zhuǎn)換圖像的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!