当前位置: 首页 > news >正文

agx 安装ros opencv_「OpenCV+Python」一行代码搞定张正友相机标定及图像矫正

做视觉相关课题,经常使用相机标定,求相机参数。 每次都要上网找例程,还要测试,还不一定能用。 觉得唯一好用的是ROS自带的相机标定包,一行代码就行,但是也必须开启ROS节点,连接USB摄像头。 如果是不能连接到电脑的好像也不可以。 遂打算自己写一个小工具,可以完成ROS相机标定包差不多的功能,但是只用图片就可以。


下载地址

https://github.com/chenyr0021/camera_calibration_tool

环境

本代码在一下环境通过测试: Ubuntu: 16.04 Python: 3.5.2 OpenCV: 3.2.0

依赖的python包: - numpy - xml

功能概览

1. 使用图片完成相机标定,并将结果保存于xml文件中 2. 加载现有相机参数,矫正视频并保存 3. 实现usb摄像头实时标定及显示

使用方法

首先下载代码:

git clone git@github.com:chenyr0021/camera_calibration_tool.git

或者直接去上面的下载地址,下载代码。

7ef47d7c88394f163f2d5765510279fb.png

相机标定及参数保存

  1. 使用需要标定的相机拍摄棋盘格(标定板)。从不同的角度和距离拍摄10张以上,越多越好。注意图像中棋盘格的方向不要改变,即横纵向不能转换。
  2. 把图片保存至chess文件夹中,把原有文件删掉。图片需以JPGpngjpg为后缀。
  3. 在文件夹中运行:
python3 calibration.py --image_size 1920x1080 --mode calibrate --corner 8x6 --square 20

将以下参数替换成自己的: image_size:图像分辨率,宽x高 corner:棋盘格角点,宽x高 square:棋盘格中每个格子的实际宽度,单位:mm

运行结束没有报错,相机参数将会保存在camera_params.xml

矫正视频

如果已经有相机参数,并且以与上文相同的格式保存,那么可以直接运行:

python3 calibration.py --image_size 1920x1080 --mode rectify --video_path test.mp4

同样需要将参数替换,其中video_path是视频路径。 矫正后的视频保存在同一文件夹下,命名:out.xxx,后缀与输入的视频相同。 注意:作者仅测试过mp4avi格式的视频,其他格式没有测试。

矫正相机

与矫正视频相似,运行:

python3 calibration.py --image_size 1920x1080 --mode rectify --camera_id 0

camera_id为usb相机的id。 按ESC退出。

注意事项

  • 标定和矫正时使用的图片/视频分辨率必须相同,否则不准

相关文章:

  • 三菱plc232数据线驱动下载_2020山东三菱PLCFX3GA40MT回收回收量大收购诚信回收
  • getaway网关转发去前缀_如何极度压榨网络性能:揭秘 UCloud 的物理云网关
  • esp32 camera_利用Phyphox和ESP32蓝牙探究光敏电阻电流与光强的关系
  • iphone如何信任软件_不是什么数据都能恢复的:留神那些号称可以恢复iPhone数据的工具...
  • 360安全浏览器兼容模式怎么设置_网络资讯:360安全浏览器怎么样
  • csrf攻击原理与解决方法_动图之磁翻板液位计原理及指示异常的判定解决方法...
  • ligergrid 奇偶行效果_淘宝补单多久有效果?如何操作?
  • mybatis核心工厂类是哪一个_温州核心区将建文化新地标!设计方案出炉,你喜欢哪一个?...
  • 大多数日志文件的后缀名是_网络日志分析的重要性
  • eclipse可以写前端吗_ISO9001质量体系认证证书上可以写两个公司名称吗?
  • 数字电路数据选择器及其应用实验报告_岂止于大,一文读懂大数据及其在推荐系统的应用...
  • java前沿技术_初学者如何才能成为一名优秀的Java程序员
  • xampp去运行php文件_五、??文件包含漏洞
  • o型圈沟槽设计_2020内蒙古大尺寸O型密封圈报价
  • win8连接wifi成功但受限制_电脑连无线网提示无线网络受限制?路由电脑都重启了没用...
  • “大数据应用场景”之隔壁老王(连载四)
  • 【个人向】《HTTP图解》阅后小结
  • Angular数据绑定机制
  • CODING 缺陷管理功能正式开始公测
  • fetch 从初识到应用
  • Flannel解读
  • HTML中设置input等文本框为不可操作
  • JavaScript设计模式系列一:工厂模式
  • java中的hashCode
  • MySQL数据库运维之数据恢复
  • React 快速上手 - 07 前端路由 react-router
  • Unix命令
  • Webpack入门之遇到的那些坑,系列示例Demo
  • Yeoman_Bower_Grunt
  • 编写符合Python风格的对象
  • 简单实现一个textarea自适应高度
  • 坑!为什么View.startAnimation不起作用?
  • 如何进阶一名有竞争力的程序员?
  • 如何胜任知名企业的商业数据分析师?
  • 微信小程序填坑清单
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 项目管理碎碎念系列之一:干系人管理
  • FaaS 的简单实践
  • ​ubuntu下安装kvm虚拟机
  • #define用法
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (pojstep1.1.2)2654(直叙式模拟)
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (排序详解之 堆排序)
  • (三)docker:Dockerfile构建容器运行jar包
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (一) springboot详细介绍
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • **PHP二维数组遍历时同时赋值
  • .NET Core 中的路径问题
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现