本文通过摄像头参数(fx,fy,cx,cy,k1,k2,p1,p2,p3(标定得到))去矫正摄像头拍出来的图像畸变详细代码在底部

首先

这里我们先介绍两个函数:他们都可以用来矫正畸变,但是一个是输入是Mat型,一个输入是IplImage* 型

本文用Mat格式读取图像,故采用第一个函数。

undistort()        //用于Mat图像

cvUndistort()     //用于 IplImage* 图像

其次

标定一下摄像头,得到参数矩阵。(我用matlab标定工具箱搞出来的~)

Matlab2019 标定工具箱结果

再次

这里通过paramtersInit()将参数转换为系数阵

然后传入到undistort里面去,这就结束了~

效果

畸变矫正前/后

代码

```

#include

#include

#include

#include

using namespace cv;

using namespace std;

Mat matrix;

Mat coeff;

Mat new_matrix;

double fx = 682.421509, fy = 682.421509, cx = 633.947449, cy = 404.559906;

double k1k2Distortion[2] = {-0.15656,-0.00404};

double p1p2p3Distortion[3] = {-0.00078,-0.00048,0.00000};

using namespace cv;

using namespace std;

void paramtersInit();//将参数转换为系数阵

int main()

{

cv::Mat srcMat, dstMat;

paramtersInit();

srcMat = imread("img.jpg");

undistort(srcMat, dstMat, matrix, coeff, new_matrix);

imwrite("undistortImg.png", dstMat);

imshow("front", srcMat);

imshow("after",dstMat);

waitKey(0);

system("pause");

return 0;

}

void paramtersInit()

{

matrix = Mat(3, 3, CV_64F);

matrix.at(0, 0) = fx;

matrix.at(0, 1) = 0;

matrix.at(0, 2) = cx;

matrix.at(1, 0) = 0;

matrix.at(1, 1) = fy;

matrix.at(1, 2) = cy;

matrix.at(2, 0) = 0;

matrix.at(2, 1) = 0;

matrix.at(2, 2) = 1;

coeff = Mat(1, 4, CV_64F);

coeff.at(0, 0) = k1k2Distortion[0];

coeff.at(0, 1) = k1k2Distortion[1];

coeff.at(0, 2) = p1p2p3Distortion[0];

coeff.at(0, 3) = p1p2p3Distortion[1];

}

```

图像畸变矫正 matlab,关于opencv图像畸变矫正相关推荐

  1. 图像旋转的MATLAB和OpenCV源码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 源码中用到的lena.jpg.lena_gray ...

  2. 图像转置的MATLAB和OpenCV源码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 注意,图像转置和图像旋转是两回事,图像转置只是把 ...

  3. matlab 三维图像配准,[转载]Matlab实现多种图像配准(转)

    本文讲述如何利用Matlab Image Processing Toolbox中的图像配准工具实现线性正投影.仿射.投影.多项式.分段线性.局部加权平均配准的过程. 实验平台 X86 PC,Windo ...

  4. 利用python对图像进行傅里叶变换_python用opencv 图像傅里叶变换

    傅里叶变换 dft = cv.dft(np.float32(img),flags = cv.DFT_COMPLEX_OUTPUT) 傅里叶逆变换 img_back = cv.idft(f_ishift ...

  5. 多图像平均法去噪MATLAB,关于多图像平均法降噪问题的全面分析 - 全文

    在实际获取和传输图像的过程往往会发生图像失真,所得到图像和原始图像有某种程度的差别.这些都是因为有外界的噪声加入到图像中,因此在对采集到的图像进行处理前,需要先对图像进行预处理,就是要对噪声图像进 行 ...

  6. C/C++实现双目矫正(不使用OpenCV内部函数)及矫正源码解析

    C/CPP实现双目矫正(不使用OpenCV)及矫正源码解析 这篇文章是之前[要matlab标定数据做双目相机矫正OpenCV C++]的补充,再加上了双目矫正的原理及代码注释.更新中-- 本文所需数据 ...

  7. matlab dicom图像异常,用Matlab处理Dicom图像

    最近在处理CT图像时,CT图像是对人体进行逐层扫描的,在图像有很多不需要的部分,比如肋骨部分就夹杂在里面,导致三维重建出来的图像有很多不需要的部分.很不好处理. 于是,我就想了了简单方法,对一张一张的 ...

  8. matlab给图像加云,matlab怎么给图像加雾

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 % -------------------------------------------------------------------- % 雾化处理 ...

  9. 红外非均匀矫正matlab实现,红外图像非均匀矫正——两点矫正

    红外芯片由于工艺问题存在严重的分均匀性,所以非均匀矫正一直是影响红外图像质量的第一因素.分均匀矫正的算法也是红外图像处理研究的重点区域,建立了一些矫正的方式方法.其中最常用最简单的就应该算是两点温度定 ...

最新文章

  1. [BZOJ1355][Baltic2009]Radio Transmission
  2. Phpstorm数组对齐设置
  3. ghelper怎么在手机上用_当长时间不用手机玩《崩坏3》、《战双》
  4. python实现线性回归预测不用sklearn库_python – 为什么我的自定义线性回归模型不匹配sklearn?...
  5. Linux系统编程28:进程间通信之共享内存和相关通信接口(ftok,shmget,shmctl,shmat,shmdt)
  6. 漫画:唐玄奘教你横扫 AVL 树面试题无敌手!
  7. contiki makefile框架分析 contiki学习之一
  8. ubuntu下jmxtrans 安装
  9. 安装完 SQL Server 2008 后没有 SQL Server Management Studio
  10. 大规模额外涨薪后,Intel又准备了24亿美元,明年再涨工资!
  11. 记录蓝屏问题FAULTY_HARDWARE_CORRUPTED_PAGE
  12. JavaEE中的网络基础知识和网络通信基础
  13. 一张纸厚度是多少毫米_一张A4纸的厚度是多少mm?
  14. 群晖搭建discuz论坛
  15. H3CNE考试模拟试题
  16. JavaScript 实现网页截屏五种方法
  17. 融合注意力机制和Bi-LSTM的旅游评价情感分析模型
  18. PhpSpreadsheet导入
  19. 谈 Linux,Windows 和 Mac -王银纠正对linux的看法
  20. 代码坏味道与重构之霰弹式修改和依恋情结

热门文章

  1. 吴镝:TiDB 在今日头条的实践
  2. Hunter2099以原创IP赋能数字藏品,引领中式潮流美学 “破圈”
  3. 最新Java 开源博客系统 Tale
  4. matlab二维信号卷积,matlab的二维卷积操作
  5. 网上流量卡可靠吗,网上的这些大流量卡你知道是怎么来的吗?
  6. day15 LinkList集合 Set集合 Map集合
  7. python代码判断素数
  8. chrome与输入法到冲突解决
  9. 八 常用控件 QLabel
  10. java poi 常用功能代码