opencv基础:相机参数标定(camera calibration)及标定结果如何使用

1、关于坐标系旋转和物体旋转对应的旋转矩阵差别
相关参考:https://blog.csdn.net/tangyongkang/article/details/5484636
注意旋转方向导致的旋转角的正负问题
https://www.cnblogs.com/meteoric_cry/p/7987548.html

2、标定推导参考
https://blog.csdn.net/Aoulun/article/details/78768570

3、标定原理系列:
https://blog.csdn.net/humanking7/category_3066597.html

4、opencv标定流程(下面第1、第1个可以了解全套的流程)
详细的步骤解释流程:https://blog.csdn.net/u010925447/article/details/77997735
opencv自带的案例使用:https://blog.csdn.net/t247555529/article/details/47836233
原理参考+案例使用:https://blog.csdn.net/u013498583/article/details/71404323
双目标定:
https://blog.csdn.net/wwp2016/category_8469003.html
https://blog.csdn.net/t247555529/article/details/48046859 快速利用opencv案例
http://wiki.opencv.org.cn/index.php/Cv%E7%85%A7%E7%9B%B8%E6%9C%BA%E5%AE%9A%E6%A0%87%E5%92%8C%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA#.E5.A7.BF.E6.80.81.E4.BC.B0.E8.AE.A1 中文opencv官网提供的案列介绍
https://blog.csdn.net/t247555529/article/details/52619149 摄像机标定研究相关不错的资料
https://blog.csdn.net/dcrmg/article/details/52986522 不错的双目案例
https://blog.csdn.net/chenyusiyuan/category_610983.html 大神双目集合
https://blog.csdn.net/humanking7/category_3066597.html 标定系列文档

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV可以使用Intel的TBB(Threading Building Blocks)库进行多线程加速,从而提高相机标定的速度。以下是使用TBB库进行相机标定的基本步骤: 1. 导入OpenCV和TBB库 ```c++ #include <opencv2/opencv.hpp> #include <tbb/tbb.h> ``` 2. 定义并行任务 使用TBB库的主要目的是将相机标定的一些计算密集型任务分配到多个线程并行计算。在这里,我们可以将每个图像的角点检测和角点坐标的提取作为一个任务。 ```c++ class FindCornersTask { public: FindCornersTask(const cv::Mat& image, std::vector<cv::Point2f>& corners, cv::Size pattern_size, int flags) : image_(image), corners_(corners), pattern_size_(pattern_size), flags_(flags) {} void operator()() const { bool found = cv::findChessboardCorners(image_, pattern_size_, corners_, flags_); if (found) cv::cornerSubPix(image_, corners_, cv::Size(11, 11), cv::Size(-1, -1), cv::TermCriteria(cv::TermCriteria::EPS + cv::TermCriteria::MAX_ITER, 30, 0.1)); } private: cv::Mat image_; std::vector<cv::Point2f>& corners_; cv::Size pattern_size_; int flags_; }; ``` 3. 创建并行任务列表 我们可以使用TBB的并行算法`parallel_for`来运行一组任务。下面的代码创建一个任务列表,每个任务都是使用上一步定义的`FindCornersTask`类。 ```c++ std::vector<FindCornersTask> tasks; for (int i = 0; i < image_list.size(); i++) { tasks.push_back(FindCornersTask(image_list[i], corners[i], pattern_size, flags)); } ``` 4. 运行并行任务 我们可以使用`parallel_for`算法来运行一组任务。这将自动将任务分配到可用的线程上并行执行。 ```c++ tbb::parallel_for(tbb::blocked_range<size_t>(0, tasks.size()), [&](const tbb::blocked_range<size_t>& r) { for (size_t i = r.begin(); i != r.end(); ++i) { tasks[i](); } }); ``` 完整的示例代码如下: ```c++ #include <opencv2/opencv.hpp> #include <tbb/tbb.h> class FindCornersTask { public: FindCornersTask(const cv::Mat& image, std::vector<cv::Point2f>& corners, cv::Size pattern_size, int flags) : image_(image), corners_(corners), pattern_size_(pattern_size), flags_(flags) {} void operator()() const { bool found = cv::findChessboardCorners(image_, pattern_size_, corners_, flags_); if (found) cv::cornerSubPix(image_, corners_, cv::Size(11, 11), cv::Size(-1, -1), cv::TermCriteria(cv::TermCriteria::EPS + cv::TermCriteria::MAX_ITER, 30, 0.1)); } private: cv::Mat image_; std::vector<cv::Point2f>& corners_; cv::Size pattern_size_; int flags_; }; int main(int argc, char** argv) { std::vector<cv::Mat> image_list; // load images ... int flags = cv::CALIB_CB_ADAPTIVE_THRESH + cv::CALIB_CB_NORMALIZE_IMAGE + cv::CALIB_CB_FAST_CHECK; cv::Size pattern_size(9, 6); std::vector<std::vector<cv::Point2f>> corners(image_list.size()); std::vector<FindCornersTask> tasks; for (int i = 0; i < image_list.size(); i++) { tasks.push_back(FindCornersTask(image_list[i], corners[i], pattern_size, flags)); } tbb::parallel_for(tbb::blocked_range<size_t>(0, tasks.size()), [&](const tbb::blocked_range<size_t>& r) { for (size_t i = r.begin(); i != r.end(); ++i) { tasks[i](); } }); // run camera calibration ... return 0; } ``` 这样,我们就可以使用TBB库加速相机标定的过程了。需要注意的是,TBB库需要在编译时与OpenCV一起链接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值