我嘗試校準我的相機,我已經生成了校準矩陣和不失真參數array([[449.23763332, 0. , 288.9949981 ], [ 0. , 509.88847329, 195.85872177], [ 0. , 0. , 1. ]])array([-0.38496184, 0.21366652, -0.00107046, 0.00090068, -0.07853835])以下代碼不失真file = 'snapshot_640_480_1.jpg'img = cv2.imread(file)h, w = img.shape[:2]newcameramtx, roi = cv.getOptimalNewCameraMatrix(mtx, dist, (w,h), 1, (w,h))mapx, mapy = cv.initUndistortRectifyMap(mtx, dist, None, newcameramtx, (w,h), 5)dst = cv.remap(img, mapx, mapy, cv.INTER_LINEAR)# crop the imagex, y, w, h = roidst1 = dst[y:y+h, x:x+w]cv.imwrite('calibresult.png', dst1)display.Image(filename='calibresult.png')生成的圖像尺寸縮小為 (95, 115, 3)有什么辦法可以使具有相同大小的圖像不失真(調整大小使圖像失真)?
1 回答

慕雪6442864
TA貢獻1812條經驗 獲得超5個贊
cv.getOptimalNewCameraMatrix允許通過提及輸入圖像大小 (w,h) 和預期圖像大小 (w1,h1) 來更改生成的無失真圖像大小,方法是更改預期圖像大小
通過改變預期的圖像大小,我們將獲得參考答案
file = r'snapshot_640_480_1.jpg'
img = cv2.imread(file)
h,? w = img.shape[:2]
# New Image shape to generate
w1,h1 = 5*w,5*h
newcameramtx, roi = cv.getOptimalNewCameraMatrix(mtx, dist, (w,h), 1, (w1,h1))
mapx, mapy = cv.initUndistortRectifyMap(mtx, dist, None, newcameramtx, (w1,h1), 5)
dst = cv.remap(img, mapx, mapy, cv.INTER_LINEAR)
添加回答
舉報
0/150
提交
取消