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

 

 

更多推荐