ดังที่เราทุกคนรู้ เราสามารถใช้ฟังก์ชัน cv::getOptimalNewCameraMatrix()
กับ alpha = 1 เพื่อรับ CameraMatrix ใหม่ จากนั้นเราใช้ฟังก์ชัน cv::undistort()
กับ CameraMatrix ใหม่ สามารถรับภาพได้หลังจากการบิดเบือนภาพ อย่างไรก็ตาม ฉันพบว่าภาพหลังจากการบิดเบี้ยวมีขนาดใหญ่เท่ากับภาพต้นฉบับและบางส่วนของภาพหลังจากการบิดเบี้ยวถูกปกคลุมไปด้วยสีดำ ดังนั้นคำถามของฉันคือ :หมายความว่าพิกเซลภาพต้นฉบับหายไปหรือไม่ และมีวิธีใดบ้างที่จะหลีกเลี่ยงการสูญเสียพิกเซลหรือรับภาพที่ใหญ่กว่าภาพต้นฉบับด้วย opencv
cv::Mat NewKMatrixLeft = cv::getOptimalNewCameraMatrix(KMatrixLeft,DistMatrixLeft ,cv::Size(image.cols,image.rows),1);
cv::undistort(image, show_image, KMatrixLeft, DistMatrixLeft,NewKMatrixLeft);
ขนาดของรูปภาพและ show_image มีทั้ง 640*480 แต่จากมุมมองของฉัน ขนาดของรูปภาพหลังจากการบิดเบี้ยวควรใหญ่กว่า 640*480 เพราะบางส่วนไม่มีความหมาย ขอบคุณ!