Как мы все знаем, мы можем использовать функцию 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, потому что какая-то его часть бессмысленна. Спасибо!