需求:根据标定板,得到标定参数,然后根据参数,对于相机采集到的图片,进行畸变。
public static Mat GetDistortion(Mat sourceMat, double[,] mtx_s,double[] dist_s)
{
var sTime = DateTime.Now;
if(camera_distortion==null)
camera_distortion = Build_Camera_Distort_from_data(dist_s);
if(camerra_matrix==null)
camerra_matrix = Build_Camera_Matrix_from_data(mtx_s);
var dst = new Mat();
var newCameramtx = Cv2.GetOptimalNewCameraMatrix(camerra_matrix, camera_distortion, sourceMat.Size(), 0, sourceMat.Size(), out Rect validPixROI);
Cv2.Undistort(sourceMat, dst, camerra_matrix, camera_distortion, newCameramtx);
newCameramtx?.Dispose();
sourceMat?.Dispose();
Console.WriteLine($"畸变一张图片; 总耗时{(DateTime.Now - sTime).TotalMilliseconds}");
return dst;
}