前提

这里不讨论怎么获取矫正参数,假定已经获取矫正参数

使用undistort

#include <opencv2\opencv.hpp>
using namespace cv;
void correct_photo(const char * jpg)
{Mat src = imread(jpg);Mat distortion = src.clone();Mat camera_matrix = Mat(3, 3, CV_32FC1);Mat distortion_coefficients;//导入相机内参和畸变系数矩阵FileStorage file_storage("out_camera_data.xml", FileStorage::READ);file_storage["Camera_Matrix"] >> camera_matrix;file_storage["Distortion_Coefficients"] >> distortion_coefficients;file_storage.release();undistort(src, distortion, camera_matrix, distortion_coefficients);
}

undistort函数对于单幅

2、使用remap

2.1 说明

void cvRemap( const CvArr* src, CvArr* dst,const CvArr* mapx, const CvArr* mapy,int flags=CV_INTER_LINEAR+CV_WARP_FILL_OUTLIERS,CvScalar fillval=cvScalarAll(0) );

参数说明:
src——输入图像.
  dst——输出图像.
  mapx——x坐标的映射 (32fC1 image).
  mapy——y坐标的映射 (32fC1 image).
  flags——插值方法和以下开关选项的组合:
  CV_WARP_FILL_OUTLIERS——填充边界外的像素. 如果输出图像的部分象素落在变换后的边界外,那么它们的值设定为 fillval。
  fillval——用来填充边界外面的值.

2.2 show me the code

#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;using namespace cv;
int main()
{const cv::Mat K = (cv::Mat_<double>(3, 3) << 6.5746697810243404e+002, 0.0, 3.1950000000000000e+002, 0.0, 6.5746697810243404e+002, 2.3950000000000000e+002, 0.0, 0.0, 1.0);const cv::Mat D = (cv::Mat_<double>(5, 1) << -4.1802327018241026e-001, 5.0715243805833121e-001, 0.0, 0.0, -5.7843596847939704e-001);//const string str = "/home/jiang/4_learn/WeChatCode/ImageUndistort/data/";//const int nImage = 5;const int ImgWidth = 640;const int ImgHeight = 480;cv::Mat map1, map2;cv::Size imageSize(ImgWidth, ImgHeight);const double alpha = 1;cv::Mat NewCameraMatrix = getOptimalNewCameraMatrix(K, D, imageSize, alpha, imageSize, 0);initUndistortRectifyMap(K, D, cv::Mat(), NewCameraMatrix, imageSize, CV_16SC2, map1, map2);VideoCapture capture("l:/109_sub.mkv");Mat frame;while (capture.isOpened()){capture >> frame;//string InputPath = str + to_string(i) + ".png";//cv::Mat RawImage = cv::imread(InputPath);//cv::imshow("RawImage", RawImage);cv::Mat UndistortImage;remap(frame, UndistortImage, map1, map2, cv::INTER_LINEAR);cv::imshow("origin", frame);cv::imshow("UndistortImage", UndistortImage);//string OutputPath = str + to_string(i) + "_un" + ".png";//cv::imwrite(OutputPath, UndistortImage);cv::waitKey(2);}return 0;
}

不过矫正函数是非常耗cpu的,图像大了以后尤其明显。

opencv 鱼眼矫正相关推荐

  1. 【图像】【OpenCV鱼眼矫正】三、鱼眼矫正原理讲解

    目录 一.鱼眼矫正原理讲解 1. 像素坐标转化为相机坐标 2. 无畸变相机坐标 与 畸变后相机坐标 的 对应关系 参考资料: 链接:https://pan.baidu.com/s/19BK9HbRBY ...

  2. opencv鱼眼矫正Java_使用OpenCV校准鱼眼镜头

    重磅干货,第一时间送达 01.简介当我们使用的鱼眼镜头视角大于160°时,OpenCV中用于校准镜头"经典"方法的效果可能就不是和理想了.即使我们仔细遵循OpenCV文档中的步骤, ...

  3. 【图像】【OpenCV鱼眼矫正】二、fisheye::initUndistortRectifyMap()源码分析

    目录 一.fisheye::initUndistortRectifyMap() 之 功能介绍 二.fisheye::initUndistortRectifyMap() 之 源码分析 1. 源码分析 2 ...

  4. 我为中国第一张火星照片做鱼眼矫正

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|CVer 以下是昨日发布的内容.今天把代码整理了一下,放 ...

  5. opencv鱼眼镜头矫正

    说明 鱼眼镜头是一种视场角很大的镜头,但是得到的图片有很大的畸变,所以需要对鱼眼镜头进行标定,标定所得的参数可以对鱼眼镜头的图像进行矫正. 下图来自opencv的文档.其中c是鱼眼镜头原图,a和b是不 ...

  6. 鱼眼矫正芯片获得的图像

    以前多数DSP做,这种方案功耗很大,并且高级一点的DSP不可能做的很小,也有专用的soc芯片,集成度都很高,刚拿到了一款soc的芯片,低功耗,小封装,非常适合需要做鱼眼矫正的应用场合.下面是我拿到的一 ...

  7. 基本矩阵 双目 matlab,MATLAB双目标定与OpenCV计算矫正参数矩阵

    Intrinsic parameters of left camera: Focal Length: fc_left = [ 320.53138 321.62046 ] ?[ 1.32444 1.28 ...

  8. OpenCV鱼眼校正

    1.获取相机参数 void CalculateParameter() 2.鱼眼校正 void Remap1() void Remap2() #include <iostream> #inc ...

  9. OpenGL实现鱼眼矫正实时视频处理

    OpenGL实时单鱼眼镜头矫正 通过Opengl 实现单鱼眼图片或视频实时矫正,实现平铺等各种模式渲染 1.沉浸模式 2.坠入模式 3.平铺模式 4.圆柱模式 5.四分平模式 6.综合模式

最新文章

  1. linux回调函数的使用
  2. JavaScript验证
  3. Spring整合Mybatis-完成用户登录
  4. 关于Zuul的几个问题
  5. 全方面的了解超宽带信号高速采集记录回放系统
  6. GitHub改为token验证后,如何提交代码?
  7. php去掉 部分字符,输出,php如何去除某个字符
  8. 罗马尼亚:曾经的黑客避风港变身全球安全人才的摇篮
  9. 为什么我在CSDN坚持写了3年多的博客?
  10. 五类推荐系统算法,非常好使,非常全面
  11. 【渝粤题库】陕西师范大学201841 比较教育学 作业(专升本)
  12. Linux快速查看OpenCV版本
  13. python实现抠图_python和opencv实现抠图
  14. JS通过高德地图将经纬度转换为地理位置
  15. linux2.6内核驱动程序注册函数,于PCI9656设备驱动程序的Linux2.6内核研究
  16. 支付宝及时到账支付成功返回信息
  17. Python pygame,精灵和精灵组
  18. 数电出题??自启动问题
  19. 彻底解决“你的时钟快了”问题
  20. 表单中的label标签

热门文章

  1. 裁员30%?互联网行业裁员力度进前三 求职竞争加剧
  2. 星巴克饮品中竟喝出活蟑螂?官方回应了...
  3. 7月发布?华为李昌竹确认Mate 50系列:会来的但不是现在
  4. 京东发布公告禁售87款游戏
  5. 瑞萨电子推出R-Car Gen3e CPU速度提升达20%
  6. 曝Redmi Note 9系列下周发布:最便宜的一亿像素手机
  7. 美团“共享单车变球场”项目落地四川阿坝
  8. 华为Mate 40系列预热海报颠覆传闻:这个设计手机圈独树一帜
  9. 直播带货的罗永浩再被限制高消费!本人回应:已取消 会尽快还债
  10. 800名员工被隔离,韩国半导体巨头紧急回应:工厂运营不受影响