import numpy as np

'''

#T_cam_imu
body_T_cam0: !!opencv-matrix
rows: 4
cols: 4
dt: d
data: [0.003489987080434578, -0.9999876012230461, 0.003552096614378108, 0.012750626916321976,
-0.999991882276288, -0.0034971112689532436, -0.002001398086459798, -0.023424853764869122,
0.0020137953486698786, -0.003545082925974641, -0.9999916884731308, -0.017826923591925007,
0, 0, 0, 1]
#T_cam_imu
body_T_cam1: !!opencv-matrix
rows: 4
cols: 4
dt: d
data: [0.00446047102202006, -0.9999665817340186, -0.006851249042621769, -0.10819639255862219,
-0.9999868688575744, -0.0044430650273882405, -0.002553680791861416, -0.024732250583609703,
0.002523154907262282, 0.0068625496970663846, -0.9999732691932166, -0.017439737925768566,
0, 0, 0, 1] '''
T1=[]
T1.append([0.003489987080434578, -0.9999876012230461, 0.003552096614378108, 0.012750626916321976])
T1.append([-0.999991882276288, -0.0034971112689532436, -0.002001398086459798, -0.023424853764869122])
T1.append([0.0020137953486698786, -0.003545082925974641, -0.9999916884731308, -0.017826923591925007])
T1.append([0, 0, 0, 1]) T2=[]
T2.append([0.00446047102202006, -0.9999665817340186, -0.006851249042621769, -0.10819639255862219])
T2.append([-0.9999868688575744, -0.0044430650273882405, -0.002553680791861416, -0.024732250583609703])
T2.append([0.002523154907262282, 0.0068625496970663846, -0.9999732691932166, -0.017439737925768566])
T2.append([0, 0, 0, 1]) # 矩阵对象可以通过 .I 更方便的求逆
T1_N = np.matrix(T1)
T2_N = np.matrix(T2) print(T1_N.I) print(T2_N.I)

  

            //=========================对原始图像畸变矫正==========================
double fx= 355.0974745605948;
double fy= 355.47832693317105;
double cx= 357.7074039567714;
double cy= 351.0244037313849; double k1= -0.023790306606729556;
double k2= -0.0007571494794293715;
double p1= 0.00016452517056601848;
double p2= -0.0005743824914513448; cv::Mat cameraMatrix = (cv::Mat_<double>(3, 3) << fx, 0, cx, 0, fy, cy, 0, 0, 1);
cv::Mat distCoeffs = (cv::Mat_<float>(4, 1) << k1, k2, p1, p2); cv::Mat dst_Left;
// 普通图像畸变矫正
//undistort(imLeft, dst_Left, cameraMatrix, distCoeffs); cv::Size corrected_size(imLeft.cols,imLeft.rows);
cv::Mat mapx, mapy;
// 鱼眼图像畸变矫正
cv::fisheye::initUndistortRectifyMap(cameraMatrix, distCoeffs, cv::Matx33d::eye(), cameraMatrix, corrected_size, CV_16SC2, mapx, mapy); remap(imLeft, dst_Left, mapx, mapy, cv::INTER_LINEAR, cv::BORDER_TRANSPARENT); // cv::imshow("leftImage", imLeft);
// cv::imshow("dst_Left", dst_Left);
// cv::waitKey(2); imLeft=dst_Left;
//=========================对原始图像畸变矫正==========================

  

opencv对鱼眼图像畸变矫正的更多相关文章

  1. 畸变矫正、透视变换加速(OpenCV C++)

    前两周,同事和我说检测时间超时,其中对图像做畸变矫正和投影变换就要花费25ms(3000×3000的图).而此时我们已经用上了文章opencv图像畸变矫正加速.透视变换加速方法总结中的方法.突然我想到 ...

  2. OpenCV 经纬法将鱼眼图像展开

    文章目录 前言 理论部分 鱼眼展开流程 鱼眼标准坐标计算 标准坐标系与球坐标的转换 代码实现 测试效果如下图 总结 this demo on github 前言 鱼眼镜头相比传统的镜头,视角更广,采集 ...

  3. kinect 2 for xbox畸变矫正

    kinect 2 for xbox畸变矫正 畸变校正的详细方法在iai_kinect2/kinect2_calibration的readme文件中. 由于通过kinect2获得的图像数据有不同的模式( ...

  4. opencv提取截获图像(总结摘来)

    opencv提取截获图像(总结摘来) http://blog.csdn.net/wuxiaoyao12/article/details/7305865 版权声明:本文为博主原创文章,未经博主允许不得转 ...

  5. 使用GDI+显示OpenCV中的图像IplImage

    OpenCV虽然自带了轻量级的界面库HighGUI,但是支持的图像化元素实在是太少了,一般只在前期算法测试时使用.实际产品还是使用MFC库.因此本文记录了如何在GDI+中显示OpenCV中的IplIm ...

  6. [OpenCV实战]46 在OpenCV下应用图像强度变换实现图像对比度均衡

    本文主要介绍基于图像强度变换算法来实现图像对比度均衡.通过图像对比度均衡能够抑制图像中的无效信息,使图像转换为更符合计算机或人处理分析的形式,以提高图像的视觉价值和使用价值.本文主要通过OpenCV ...

  7. 【OpenCV】摄像机标定+畸变校正

      摄像机标定 本文目的在于记录如何使用MATLAB做摄像机标定,并通过OpenCV进行校正后的显示. 首先关于校正的基本知识通过OpenCV官网的介绍即可简单了解: http://docs.open ...

  8. OpenCV MAT基本图像容器

    参考博客: OpenCv中cv::Mat和IplImage,CvMat之间的转换 Mat - 基本图像容器 Mat类型较CvMat和IplImage有更强的矩阵运算能力,支持常见的矩阵运算(参照Mat ...

  9. OpenCV中对图像进行二值化的关键函数——cvThreshold()。

    函数功能:采用Canny方法对图像进行边缘检测 函数原型: void cvThreshold( const CvArr* src, CvArr* dst, double threshold, doub ...

  10. opencv中的图像复制、保存和显示

    接下来几天会写一个opencv的基础系列,与各位相互学习! &1 图像操作 声明图像指针:IplImage* 读入图像: cvLoadImage 创建图像:cvCreateImage 复制图像 ...

随机推荐

  1. 【服务器数据恢复】Linux服务器分区不能挂载的数据恢复案例

    服务器数据恢复环境:某品牌PowerEdge系列服务器,磁盘阵列存储型号为该品牌MD3200系列存储,分配lun:linux centos 7操作系统,EXT4文件系统. 服务器故障:服务器在工作中由 ...

  2. Unity 动态加载图片出现红色问号

    因为图片必须是RGB格式的才可以 ,Cao!!!

  3. 实现docker run命令

    基于宿主机来创建容器 执行命令 <自己动手写Docker>code-3.1 ./mydocker run -ti /bin/bash 代码流程 1. 解析参数.2. 通过clone来for ...

  4. 认识canal

    cancl实现数据库之间的实时同步的工具.通过读取mysql的二进制日志binlog,模拟mysql的slave服务器来工作. 参考链接: https://blog.csdn.net/yehongzh ...

  5. gitlab上传代码,菜鸟教学

    1.首先需要在gitlab上新建项目 2.编辑项目名称 3.在本地电脑上新建一个空的文件夹(或者是一个固定统一的文件夹),方便后续找到,这里会将gitlab的项目拉到这个文件内. 点击进入这个文件夹, ...

  6. 看K线学炒股(0803)

    高位板块的高位个股要回避,即便走反抽行情也要慎重.像容捷股份. 同是房地产行业的荣盛发展和西藏城投,差别怎么这么大?荣盛发展市净率0.4,西藏城投是4.8,市盈率更是一个天上一个地下,但股价呢?所以股 ...

  7. List list = new ArrayList()为何父类引用指向子类对象(多态)

    转自--https://blog.csdn.net/Jae_Peng/article/details/80151033 不习惯用csdn,博客园没有搜到类似的,摘录过来. 多态:要有继承,方法的重写, ...

  8. Chrome 中的 JavaScript 断点设置和调试技巧--转自hanguokai.com

    你是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~,用 ...

  9. 02 Spark架构与运行流程

    1. 为什么要引入Yarn和Spark. YARN优势1.YARN的设计减小了JobTracker的资源消耗,并且让监测每一个Job子任务(tasks)状态的程序分布式化了,更安全.更优美. 2.在新 ...

  10. JS学习-PromiseWorker

    PromiseWorker PromiseWorker是一个ChromeWorker,调用而不是postMessage()发送消息,而是调用post(),它返回一个Promise. PromiseWo ...