最新要闻
- 比亚迪海豹、长安深蓝SL03获央视第三届《中国汽车风云盛典》评委会大奖
- 诈骗网红梅尼耶的MCN被申请破产引热议 多位女网红等都受害:网友吐槽行业乱
- 世界即时看!女子开宝马占用商场特斯拉专用车位 被特斯拉怒堵2天
- 热文:构造柱的作用是什么_构造柱的作用
- 焦点热讯:网友称余额宝页面显示乱码 支付宝回应:正在修复 不影响资金安全
- 《龙马精神》电影中真打实摔 成龙:我69岁动作比你还快
- 热点!说十个需要送老婆礼物的节日
- 大阳睿能全新动力首款车型H12下线:电机1700W 续航150公里
- 249元 小米米家自动真空封口机发布:-70KPa大吸力
- 全球快资讯丨世界各地小孩的玩具对比:不止文化与财富的差距
- 当前动态:马斯克开源推特算法反被指责:隐藏重要细节、与承诺不符
- 【当前独家】《王者荣耀》S31赛季4月13日上线 新英雄姬小满来了
- 深圳开放大学优秀学生李德炎:保持学习状态,争做行业模范
- 速递!定价全球最低!国产科幻FPS《边境》国区售价68元起
- 天天观热点:孟羽童已不是董明珠秘书引热议 本人回应:很享受格力市场营销工作
- 今日看点:米粉换上Redmi Note 12 Turbo:陪伴他5年的小米6正式退役
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球视点!OpenCV获取相机旋转矩阵和平移矩阵
【资料图】
想要求解旋转矩阵和平移矩阵,先要了解相机内参矩阵和畸变矩阵如何获取,不了解的可以先移步https://www.cnblogs.com/nobodyx/p/17297074.html
先上代码
#include #include #include #include int main() { // 使用 glob 库读取棋盘格图片 std::vector filenames; cv::glob("left*.jpg", filenames, false); // 初始化棋盘格的行列数和尺寸(单位:mm) cv::Size board_size(9, 6); float square_size = 20.f; // 存储棋盘格图像上所有角点坐标 std::vector> object_points; std::vector> image_points; // 遍历所有棋盘格图片,检测角点并存储角点坐标 for (const auto &filename : filenames) { cv::Mat image = cv::imread(filename, cv::IMREAD_GRAYSCALE); std::vector corners; bool ret = cv::findChessboardCorners(image, board_size, corners); if (ret) { cv::cornerSubPix(image, corners, cv::Size(11, 11), cv::Size(-1, -1), cv::TermCriteria(cv::TermCriteria::EPS + cv::TermCriteria::COUNT, 30, 0.1)); std::vector object_point; for (int i = 0; i < board_size.height; ++i) { for (int j = 0; j < board_size.width; ++j) { object_point.emplace_back(float(j * square_size), float(i * square_size), 0); } } object_points.emplace_back(object_point); image_points.emplace_back(corners); } else { std::cerr << "Failed to detect corners in image: " << filename << std::endl; } } // 计算相机内参矩阵和畸变矩阵 cv::Mat camera_matrix, dist_coeffs; std::vector rvecs, tvecs; double rms = cv::calibrateCamera(object_points, image_points, cv::Size(1920, 1080), camera_matrix, dist_coeffs, rvecs, tvecs); // 打印相机内参矩阵和畸变矩阵 std::cout << "Camera matrix:" << std::endl << camera_matrix << std::endl; std::cout << "Distortion coefficients:" << std::endl << dist_coeffs << std::endl; // 计算相机的旋转矩阵和平移矩阵 cv::Mat rotation_matrix, translation_matrix; cv::solvePnP(object_points[0], image_points[0], camera_matrix, dist_coeffs, rotation_matrix, translation_matrix); // 打印相机的旋转矩阵和平移矩阵 std::cout << "Rotation matrix:" << std::endl << rotation_matrix << std::endl; std::cout << "Translation matrix:" << std::endl << translation_matrix << std::endl; std::cout << std::endl; return 0;}
头一次没有使用using namespace, 有点费劲
这里有必要解释一下一个关键的函数--solvePnP
cv::solvePnP(object_points, image_points, camera_matrix, dist_coeffs, rotation_vector, translation_vector, use_extrinsic_guess, flags);
- object_points: std::vectorcv::Point3f 类型,存储 3D 物体坐标点的坐标值;
- image_points: std::vectorcv::Point2f 类型,存储对应的 2D 图像坐标点的坐标值;
- camera_matrix: cv::Mat 类型,相机的内参矩阵;
- dist_coeffs: cv::Mat 类型,相机的畸变矩阵;
- rotation_vector: cv::Mat 类型,函数返回的旋转向量,包含相机的旋转信息;
- translation_vector: cv::Mat 类型,函数返回的平移向量,包含相机的平移信息;
- use_extrinsic_guess: bool 类型,表示是否使用函数提供的外参估计结果作为初始值;
- flags: int 类型,表示求解过程的选项,可选项包括 SOLVEPNP_ITERATIVE、SOLVEPNP_P3P、SOLVEPNP_EPNP 和 SOLVEPNP_DLS。
其中,rotation_vector 和 translation_vector 分别是 Rodrigues 变换和欧拉旋转的等效表示方式。可以通过 cv::Rodrigues(rotation_vector, rotation_matrix) 函数将旋转向量转换为旋转矩阵,或者通过 cv::composeRT(rotation_vector, translation_vector, camera_rotation, camera_translation, camera_rotation_matrix, camera_translation_matrix) 函数将旋转向量和平移向量组合成变换矩阵。
最后说一下思路
(1)求内参矩阵和畸变矩阵
// 使用 glob 库读取棋盘格图片 std::vector filenames; cv::glob("left*.jpg", filenames, false); // 初始化棋盘格的行列数和尺寸(单位:mm) cv::Size board_size(9, 6); float square_size = 20.f; // 存储棋盘格图像上所有角点坐标 std::vector> object_points; std::vector> image_points; // 遍历所有棋盘格图片,检测角点并存储角点坐标 for (const auto &filename : filenames) { cv::Mat image = cv::imread(filename, cv::IMREAD_GRAYSCALE); std::vector corners; bool ret = cv::findChessboardCorners(image, board_size, corners); if (ret) { cv::cornerSubPix(image, corners, cv::Size(11, 11), cv::Size(-1, -1), cv::TermCriteria(cv::TermCriteria::EPS + cv::TermCriteria::COUNT, 30, 0.1)); std::vector object_point; for (int i = 0; i < board_size.height; ++i) { for (int j = 0; j < board_size.width; ++j) { object_point.emplace_back(float(j * square_size), float(i * square_size), 0); } } object_points.emplace_back(object_point); image_points.emplace_back(corners); } else { std::cerr << "Failed to detect corners in image: " << filename << std::endl; } } // 计算相机内参矩阵和畸变矩阵 cv::Mat camera_matrix, dist_coeffs; std::vector rvecs, tvecs; double rms = cv::calibrateCamera(object_points, image_points, cv::Size(1920, 1080), camera_matrix, dist_coeffs, rvecs, tvecs); // 打印相机内参矩阵和畸变矩阵 std::cout << "Camera matrix:" << std::endl << camera_matrix << std::endl; std::cout << "Distortion coefficients:" << std::endl << dist_coeffs << std::endl;
这个我不过多解释,不懂的可以看一下我上一篇博客
(2)求解旋转矩阵和平移矩阵
// 计算相机的旋转矩阵和平移矩阵 cv::Mat rotation_matrix, translation_matrix,R; cv::solvePnP(object_points[0], image_points[0], camera_matrix, dist_coeffs, R, translation_matrix ); cv::Rodrigues(R, rotation_matrix); // 打印相机的旋转矩阵和平移矩阵 std::cout << "Rotation matrix:" << std::endl << rotation_matrix << std::endl; std::cout << "Translation matrix:" << std::endl << translation_matrix << std::endl; std::cout << std::endl;
过程比较简单,就是用solvePnP获得相机旋转向量和平移向量,再利用Rodrigues把旋转向量转化为旋转矩阵,而平移向量和平移矩阵一致,直接打印即可。
关键词:
环球视点!OpenCV获取相机旋转矩阵和平移矩阵
海信电视精简系统
【全球聚看点】试验设计课程作业
比亚迪海豹、长安深蓝SL03获央视第三届《中国汽车风云盛典》评委会大奖
诈骗网红梅尼耶的MCN被申请破产引热议 多位女网红等都受害:网友吐槽行业乱
世界即时看!女子开宝马占用商场特斯拉专用车位 被特斯拉怒堵2天
世界速递!2023.4.7【模板】快速沃尔什变换FWT
今日报丨面试题百日百刷-HBase HRegionServer宕机如何处理
第135篇:Three.js基础入门
每日消息!交易商协会评估更新定向债务融资工具专项机构投资人名单
美国3月非农就业人口增幅降至23.6万 失业率为3.5%
热文:构造柱的作用是什么_构造柱的作用
焦点热讯:网友称余额宝页面显示乱码 支付宝回应:正在修复 不影响资金安全
《龙马精神》电影中真打实摔 成龙:我69岁动作比你还快
热点!说十个需要送老婆礼物的节日
焦点观察:火热出炉 秘汁全鸡的数字新“味”
大阳睿能全新动力首款车型H12下线:电机1700W 续航150公里
249元 小米米家自动真空封口机发布:-70KPa大吸力
全球快资讯丨世界各地小孩的玩具对比:不止文化与财富的差距
当前动态:马斯克开源推特算法反被指责:隐藏重要细节、与承诺不符
【当前独家】《王者荣耀》S31赛季4月13日上线 新英雄姬小满来了
深圳开放大学优秀学生李德炎:保持学习状态,争做行业模范
天天快看点丨自动旋转ROS小车(rviz+urdf+xacro)(附加python操作键盘控制小车运动)
每日资讯:java -- Math、BigInteger、BigDecimal类和基本类型的包装类、正则表达式
【快播报】黑田东彦“卸任”言论释放宽松信号 日债收益率曲线平坦化下移
速递!定价全球最低!国产科幻FPS《边境》国区售价68元起
天天观热点:孟羽童已不是董明珠秘书引热议 本人回应:很享受格力市场营销工作
今日看点:米粉换上Redmi Note 12 Turbo:陪伴他5年的小米6正式退役
天天即时看!网友看电影觉得难看成功退一半费用 影城:散场20分钟内可办理
电动自行车调速器网上公开售卖!专家:私改限速或引发燃爆事故
环球资讯:ps 备忘清单_开发速查表分享
天天观天下!王者更新:祈愿夺宝重启,520传说天幕返场,5英雄喜提新衣
焦点速读:离谱!观致汽车要倒台 车主也被拉下水:被厂商告了
全球气象预报大模型风乌发布:有效预报时间首破10天
事关“刹车失灵”争议核心数据 本田中国召回超20万辆雅阁
长城财报漂亮 是因为新能源汽车卖得不漂亮
全球新资讯:仅1999元!铁威马F4-423(4G)四盘位NAS开启预售:双2.5G网口
全球速读:大美游轮2022年亏损2511.24万同比亏损增加 游轮运营业务毛利减少
Privilege Escalation 权限提升
即时焦点: 如何处理Xcode上传IPA文件后无法在后台架构版本中显示的问题?
当前要闻:易基因:群体分析揭示了DNA甲基化在番茄驯化和代谢多样性中的作用|组学研究
记录-VueJs中如何使用Teleport组件
Springfox与SpringDoc——swagger如何选择(SpringDoc入门)
澳大利亚一飞机掉入印度洋:全员坠海 未有伤亡
世界速递!比亚迪大疆达成合作!全新海狮将用上高级辅助驾驶技术:纯视觉走天下
每日消息!希捷推出星球大战版SSD:三款RGB光剑任选
资讯推荐:一图看懂!小米/红米多款热门机型官方降价:小米12S/13全系有活动
环球新动态:用两年就卡?3分钟学会选电视硬件
当前播报:申城交警多措并举加强高速公路和城市快速路事故预防工作
世界头条:用 Go 剑指 Offer 17. 打印从1到最大的n位数
【天天时快讯】获取Python函数信息的方法
世界信息:GPT对SaaS领域有什么影响?
全球新资讯:什么是 Java 字节码?采用字节码的好处是什么?
【天天聚看点】ubuntu离线安装tcpdump
因债券承销尽调不充分等问题 民生证券被上交所出具书面警示
每日视讯:最新确认:小米13 Ultra用上了USB 3.X接口
《流浪地球2》4月14日网络首播!导演郭帆:修改了一百多个视效镜头
差评高达86%!艺画开天官博恢复《三体》动画相关微博
【世界聚看点】等等党狂喜!比亚迪海豹有优惠了:本月订车至享高3.1万元减免
全球热门:荣耀Magic5 Pro“首碎”!SUV压过屏幕依旧完好
每日热闻!微信界面黑色怎么设置成白色_微信变成黑色怎么调过来
【独家】使用Drone+gitea配置自己的CICD流程
全球热消息:收评:两市震荡走强创指涨0.84% 医药、人工智能概念涨幅居前
最资讯丨马来西亚原装进口:猫山王榴莲雪糕4元/支狂促
索尼痛斥英国CMA:偏袒微软过于荒谬
当前头条:合资A级轿车更难了!2023款比亚迪秦PLUS EV冠军版上市:12.98万起
苹果中国杀疯!iPhone14售价跌破5000元 买它还是华为P60?
环球要闻:网红密子君带货无骨鸡爪!粉丝提醒她有蟑螂 本人道歉
保罗:比赛起起伏伏很奇怪 从未跟KD这种能吸引包夹的球员共事过
焦点热门:全文索引:Apache Lucene(一)
天天热讯:Java 自增自减运算符和移位运算符介绍
世界观速讯丨NTP时间同步服务器(频率同步)包含帧同步、载波同步、位同步
sms-activate短信验证码问题
世界新资讯:153. 寻找旋转排序数组中的最小值
【财经分析】新规创新保险服务模式 完善多层次长期护理保障制度
国风开放世界新作:网易新游《暂时叫它:天字七六》公布
世界今热点:全新MacBook要用OLED屏!如果不烧屏还是挺香的
或8万起售 比亚迪海鸥四颜色曝光:绿、黑、白、粉你选谁
这可能是最好看的RX 7900 XTX:华擎发布太极白色版
科大讯飞刘聪:5月6日将发布“1+N认知智能大模型”
泫雅和张贤胜的组合叫什么?泫雅和张贤胜在一起过吗?
蛇沼鬼城后面一部是什么?蛇沼鬼城录像带里的吴邪是谁?
张一山为什么剃光头?张一山出演的电视剧有哪些?
南派三叔为什么要封笔?南派三叔的全部作品顺序
被嫌弃的松子的一生讲了什么? 松子一生坎坷结局是怎么死的?
【新视野】山西省印发钢铁行业转型升级2023年行动计划
全球播报:[Web Server]Tomcat调优之监控连接池/线程池
焦点快播:(笔记)电源缓启动工作原理
世界速看:详解 Flink Catalog 在 ChunJun 中的实践之路
【环球速看料】Python selenium过图片滑块验证
拼多多百亿补贴“厂家直销”受阻:京东自营再现“排他性”竞争
细思极恐!韩国分析日本农产品超20%检出放射性物质铯
环球热讯:南财基金通·混合型基金收益排行榜(4月6日)
【天天热闻】Java中子类重写父类方法的思想本质!
头条焦点:CRLF和LF区别
焦点日报:买车更方便!新车上牌免查验试点新增21个城市:看看有你家吗
天天资讯:工资6000面试6轮当事人发声:没被录用 可能介意我年龄大
当前观察:出游正值好春光!“五一”旅游需求爆发
为何全球这么多人首选iPhone:苹果保值率第一 安卓机惨
环球资讯:气象台:未来十天冷空气影响频繁 9日起沙尘天气将卷土重来