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. 蓝牙信标、智能楼宇应用国产低功耗芯片BLE5.2 PHY6252

    PHY6252是一款支持BLE 5.2功能的系统级芯片(SoC),集成了低功耗的高性能多模射频收发机,搭载32位高性能低功耗处理器,提供64K retention SRAM.可选512/256K Fl ...

  2. img,video标签禁用鼠标右键功能

    场景描述: 在网页中显示图片,当用户右键点击图片时,禁止用户右键操作. 这里会用到一个新属性,即 oncontextmenu. 例如: <img src="图片地址" cla ...

  3. android 编译 node js 14

    本文基于wsl ubuntu 22.04.1 LTS 系统 上成功编译 安卓版 node js 14.15.4的一些记录. 编译环境: nodejs 用到两套编译器分别用来编译本机的一些工具链和目标平 ...

  4. C++ 11 数字转字符串新功能

    // 头文件 <string>string to_string (int val);string to_string (long val);string to_string (long l ...

  5. 深入理解 epoll 原理

    从网卡如何接收数据说起 CPU 如何知道接受了数据? 进程阻塞为什么不占用 CPU 资源? 工作队列 等待队列 唤醒进程 内核接收网络数据全过程 同时监视多个 socket 的方法 select 的监 ...

  6. atx

    https://github.com/openatx/atx-agent/releases/download/0.9.4/atx-agent_0.9.4_linux_386.tar.gz

  7. STP协议-基础

    生成树协议 一 .技术背景一个缺乏冗余性设计的网络:任何一个网络节点出现故障,会造成单链路故障.单设备故障,使整个网络瘫痪. 引入冗余性的同时也引入了二层环路:网络的冗余性增强了,但是却出现了二层环路 ...

  8. 查询最上活动的activity

    adb shell dumpsys window windows | grep mCurrent

  9. nop4.3 用户权限管理

    权限管理涉及到5张表: //用户表 select * from Customer //角色表select * from CustomerRole //用户和角色对应关系select * from Cu ...

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

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