OpenCV实现影像畸变矫正GPU

OpenCV实现影像矫正使用的是
initUndistortRectifyMap()计算畸变的映射
remap()计算映射,其详解见:OpenCV函数remap详解

注:k1,k2,p1,p2,k3的顺序

只能纠正不考虑skew扭曲参数的情况。

 Mat src_cpu = imread(in_filename);cv::cuda::GpuMat src(src_cpu);cv::cuda::GpuMat distortion(src.size(),src.type());cv::Mat result;//Mat src = imread(in_filename);//Mat distortion = src.clone();Mat camera_matrix = Mat::zeros(3, 3, CV_64FC1);Mat distortion_coefficients = Mat::zeros(1,5,CV_64FC1);cv::Size imageSize = src.size();camera_matrix.at<double>(0, 0) = f;camera_matrix.at<double>(0, 2) = x0;camera_matrix.at<double>(1, 1) = f;camera_matrix.at<double>(1, 2) = y0;camera_matrix.at<double>(2, 2) = 1;//std::cout << camera_matrix << std::endl;distortion_coefficients.at<double>(0, 0) = K1;distortion_coefficients.at<double>(0, 1) = K2;distortion_coefficients.at<double>(0, 2) = P1;distortion_coefficients.at<double>(0, 3) = P2;distortion_coefficients.at<double>(0, 4) = K3;//矫正//undistort(src, distortion, camera_matrix, distortion_coefficients);cv::Mat map1, map2;initUndistortRectifyMap(camera_matrix, distortion_coefficients, Mat(),camera_matrix, imageSize,CV_32FC1, map1, map2);::cv::cuda::GpuMat m_mapx;::cv::cuda::GpuMat m_mapy;m_mapx = ::cv::cuda::GpuMat(map1);m_mapy = ::cv::cuda::GpuMat(map2);::cv::cuda::remap(src, distortion, m_mapx, m_mapy, INTER_LINEAR);distortion.download(result);//imshow("img", src);//imshow("undistort", distortion);//imwrite("undistort.jpg", distortion);//imshow("img", src_cpu);////imshow("undistort", result);//waitKey(0);imwrite(out_filename, result);

OpenCV实现影像畸变矫正GPU相关推荐

  1. linux下基于c++使用opencv的cpu和gpu版本提取tvl1光流

    使用opencv c++版本提取tvl1光流 前言 Gpu版本 cpu版本 配置文件及运行 前言 在计算机视觉中,光流可以用来反映视频中的信息,在行为识别,跟踪,视频分割等任务中都使用.对光流不了解的 ...

  2. opencv:畸变矫正:透视变换算法的思想与实现

    畸变矫正 注意:虽然能够成功矫正但是也会损失了部分图像! 透视变换(Perspective Transformation) 概念: 透视变换是将图片投影到一个新的视平面(Viewing Plane), ...

  3. openCV图片倾斜矫正(java版)

    核心思想:由于openCV是用C编写,因此对C的支持度最高,曾经尝试转换成JAVA,最终都失败了,因此核心底层代码仍然是C版的 基本思路:java调用dll客户端->生成.h头文件->新建 ...

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

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

  5. 胎儿式保姆级教程:Jetson Xavier NX镜像烧录、开机配置、中文配置、风扇设置、远程桌面、文件传输配置、pycharm安装环境配置,QQ,opencv(cuda编译),torch(GPU).

    一.使用的硬件:nx板子.原装充电器.有线鼠标(USB).有线键盘(USB).有线摄像头(USB).7寸触摸显示屏.20寸大显示屏(显示屏有一个就可以,大屏幕更加方便).SD卡(128G,用64g也可 ...

  6. OPenCV 图像透视变换矫正

    图像透视变换矫正 Fu Xianjun. All Rights Reserved. 文章目录 前言 一.图像透视变换矫正是什么? 二.使用步骤 1.引入库 2.读入数据 总结 前言 随着人工智能的不断 ...

  7. opencv图片倾斜矫正

    #include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespac ...

  8. OpenCV UMat类 使用GPU运算

    在opencv中,已经嵌入了opencl运行的方式,通过使用UMat对象,opencv会自动在支持OpenCL的设备上使用GPU运算,在不支持OpenCL的设备仍然使用CPU运算,这样就避免了程序运行 ...

  9. ​[openCV Calibration] 相机矫正

    镜头变形是摄影中常见的现象,使用广角的时候更可以看的出来,失真主要有以下两种: 径向畸变(radial distortion) 切向畸变(tangential distortion) 径向畸变 光线经 ...

最新文章

  1. 【原创】Windows® Embedded CE 6.0 Fundamentals 读书笔记_Chapter 9
  2. C语言编写Scheme解释器,C语言编写logo语言解释器 ,求高手指导
  3. android button自定义样式详解,Android自定义格式显示Button的布局思路
  4. 查看目标主机安装的杀毒软件
  5. latex转为html效果好吗,latex转HTML
  6. 国家机关可免费使用百会办公门户一年
  7. 各大主流浏览器的内核
  8. 阿里、京东、亚马逊为何如此重视重构“会员”?
  9. C++(qt)游戏实战项目:坦克大战(五)
  10. java 幽灵引用_全面解析Java中的GC与幽灵引用
  11. 今日头条街拍图片抓取
  12. c++ LintCode刷题记录之52. 下一个排列
  13. 』 [大话IT]我编的计算机基础教材,大家批判批判
  14. WCF学习之:利用Throttling提高服务器性能
  15. 12种编程语言训练,开源的AI “程序员”来了,CMU出品
  16. [KALI] 新装KALI自动化配置
  17. 8051f CH375 优盘---ch375.c
  18. 从零开始快速配置个人博客
  19. crontab -e修改默认编辑器
  20. 堕落花之鬼打墙迅雷下载

热门文章

  1. 解决Win11或Win10版本配置IDEA的JDK1.8的版本以及java环境是否成功配置的问题
  2. 有源rfid标签和无源rfid标签有哪些区别
  3. Arduino - RGB全彩LED模块
  4. 英语语法:定语从句讲解
  5. QQ圈子凭借什么原理进行划分的?
  6. web课程设计网页规划与设计:个人毕设网站设计 —— 二手书籍(11个页面) HTML+CSS+JavaScript...
  7. js定时器实现右下角弹窗广告缓慢弹出
  8. dos系统不能安装python模块_dos窗口运行python文件提示找不到模块
  9. 5转自 饮水思源 bbs.sjtu.edu.cn·[FROM: 202.120.25.97]
  10. 安装nodejs教程