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