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. 4口高速USB 2.0 HUB控制器 DPU1.1S,兼容替代FE1.1S

    DPU1.1S是一款高性能.低功耗 4 口高速 USB2.0HUB 控制器,上行端口兼容高速 480MHz和全速 12MHz 两种模式,4个下行端口兼容高速480MHz.全速12MHz.低速 1.5M ...

  2. 解决python 操作 hbase报错:TTransportException(type=4,message=’TSocket read 0 bytes’)

    ```text# 解决报错:hbase报错TTransportException(type=4,message='TSocket read 0 bytes')这种情况一般协议问题和服务端没开启,如果服 ...

  3. 2022-11-22学习内容-Client端代码编写-数据删除

    1.Client端代码编写 1.1activity_content_write.xml <?xml version="1.0" encoding="utf-8&qu ...

  4. CAN通讯模板

    #define MyCAN_SJW CAN_SJW_3tq#define MyCAN_BS1 CAN_BS1_5tq#define MyCAN_BS2 CAN_BS2_3tq#define MyCAN ...

  5. lua-路径加载lua文件-函数返回值,访问lua文件中的变量

    lua文件如下: print("ddhdhh")function login(username,pswd)if username =="ms" and pswd ...

  6. 修复右键批量打印PDF文件的功能

    bat文件内容如下, 直接右键管理员运行即可. @echo off rem "功能描述:修复右键批量打印PDF文件的功能" rem "制作人:赵龙" rem & ...

  7. 使用CSS 绘制各种形状

      如何使用CSS 绘制各种形状? 很多小伙伴在做开发的时候,遇到一些要画很多形状的时候,就很纠结了,知道怎么用CSS去布局,就是不知道怎么画图案. 其实使用CSS可以绘制出很形状的,比如三角形,梯形 ...

  8. ObjectARX2020向导创建项目失败,一直显示创建窗口原因

    安装了好多次,查了好多资料,发现是需要将向导的msi文件以管理员权限运行,可以参考下面的链接 https://www.dawnnote.com/237.html

  9. PHP 8 Apache 2.4

    PHP 8 一.下载 官网:PHP For Windows: Binaries and sources Releases 切记要下载Thread Safe版本,不然后面不能够连接Apache服务   ...

  10. tsc条码打印机如何导入表格批量打印

    很多时候,我们在TSC条码打印机的权昌条码打印软件里做标签时,涉及数据特别大,都保存在EXCLE表格里,那要怎么做,才可以使软件批量打印EXCEL数据呢?下面,小编就教教大家一种简单的批量打印标签的方 ...