色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

python 攝像機標定

錢淋西2年前9瀏覽0評論

攝像機標定是計算機視覺領域中的一項重要任務,它的目的是校準相機成像的幾何特性,使得在不同角度、距離和環境下,相機所拍攝的圖像能夠正確地表示物體的真實尺寸和位置。在Python中,我們可以使用OpenCV庫來實現相機標定。

import numpy as np
import cv2
#讀取標定板圖像
img = cv2.imread('calibration.jpg')
#設置標定板大小
pattern_size = (7,6)
#提取標定板角點
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, corners = cv2.findChessboardCorners(gray, pattern_size, None)
if ret == True:
corners2 = cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)
#繪制標定板角點
cv2.drawChessboardCorners(img, pattern_size, corners2, ret)
#標定相機
objp = np.zeros((pattern_size[0]*pattern_size[1],3), np.float32)
objp[:,:2] = np.mgrid[0:pattern_size[0],0:pattern_size[1]].T.reshape(-1,2)
objpoints = []
imgpoints = []
objpoints.append(objp)
imgpoints.append(corners2)
ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, gray.shape[::-1],None,None)
#保存標定結果
calibration_data = {'camera_matrix': mtx, 'dist_coeff': dist}
np.save('calibration_data.npy', calibration_data)
#使用標定結果對圖像進行矯正
undistorted = cv2.undistort(img, mtx, dist)
#顯示原始圖像和矯正后的圖像
cv2.imshow('original', img)
cv2.imshow('undistorted', undistorted)
cv2.waitKey(0)
cv2.destroyAllWindows()

上述代碼中,我們首先讀取標定板圖像,并通過cv2.findChessboardCorners()函數提取出標定板的角點。然后,我們使用標定板的角點作為輸入,調用cv2.calibrateCamera()函數來計算相機的內參矩陣和畸變系數。最后,我們使用cv2.undistort()函數來將標定結果應用到原始圖像上,得到矯正后的圖像。