Matlab Camera Calibrator 工具箱使用方法参考:如何利用Matlab APPS camera calibrator 测相机内部参数!!_既然如此的博客-CSDN博客
opencv undistort 函数使用接口说明:opencv-undistort_鱼险胜的博客-CSDN博客_cv undistort
畸变校正详解:[图像]畸变校正详解_祥知道的博客-CSDN博客_畸变校正
一、Matlab识别的参数与opencv需要的格式不同,需要转换
要把上面的矩阵改为:[k1,k2,p1,p2,k3]作为输入和输出。
转换代码
%% matlab校正参数,矩阵转置,,k1,k2,p1,p2,k3. matlab格式转Opencv格式
% https://blog.csdn.net/haronchou/article/details/125758013
clear;clc;
load('12个相机原始校正参数_demo.mat'); %有12个变量,inf1~inf6, vis1~vis6
%% 正确的借鉴
for n=1:6
% 输入变量有cameraParams的s
TempVis = eval(['cameraParams_vis',num2str(n)]); %每次获取一个变量
Rv = TempVis.RadialDistortion; %i
Tv = TempVis.TangentialDistortion; %i
strOutNameVis.IntrinsicMatrix = TempVis.IntrinsicMatrix';%i
strOutNameVis.RTDistortion = [Rv(1),Rv(2),Tv(1),Tv(2),Rv(3)];
% 输出变量没有cameraParam的s
eval(['cameraParam_vis',num2str(n),'=','strOutNameVis',';']);
TempInf = eval(['cameraParams_inf',num2str(n)]); %每次获取一个变量
R = TempInf.RadialDistortion; %i
T = TempInf.TangentialDistortion; %i
strOutNameInf.IntrinsicMatrix=TempInf.IntrinsicMatrix';%i
strOutNameInf.RTDistortion = [R(1),R(2),T(1),T(2),R(3)];
eval(['cameraParam_inf',num2str(n),'=','strOutNameInf',';']);
end