4.结构光:遇到的问题
来源:互联网 发布:淘宝上哪家燕窝是正品 编辑:程序博客网 时间:2024/05/30 23:52
折腾了结构光视觉已有一个月之久了,代码不易,且调且珍惜啊!遇到的主要问题如下:
1.OpenCV的速度真心慢,无论是相移还是格雷码,开源的要慎重啊!
2.立体矫正之后的图片进行三维重建,Failed!这个问题很致命,目前一直没搞懂,问题出在哪,继续摸索吧!
核心代码如下,参考OpenCV3.1的例子:
// 初始化size_t numberOfPatternImages = graycode_Decoder->getNumberOfPatternImages();//42vector<vector<Mat>> captured_pattern;captured_pattern.resize(2);captured_pattern[0].resize(numberOfPatternImages);captured_pattern[1].resize(numberOfPatternImages); // 全白图像,白色图案编码Mat color = imread(imagelist[numberOfPatternImages], IMREAD_COLOR);Size imagesSize = color.size();// 立体校正Mat R1, R2, P1, P2, Q;Rect validRoi[2];stereoRectify(cam1intrinsics, cam1distCoeffs, cam2intrinsics, cam2distCoeffs, imagesSize, R, T, R1, R2, P1, P2, Q,0, -1, imagesSize, &validRoi[0], &validRoi[1]);Mat map1x, map1y, map2x, map2y;initUndistortRectifyMap(cam1intrinsics, cam1distCoeffs, R1, P1, imagesSize, CV_32FC1, map1x, map1y);initUndistortRectifyMap(cam2intrinsics, cam2distCoeffs, R2, P2, imagesSize, CV_32FC1, map2x, map2y);// 导入图像for (size_t i = 0; i < numberOfPatternImages; i++){// 0-41captured_pattern[0][i] = imread(imagelist[i], IMREAD_GRAYSCALE);// 44-87captured_pattern[1][i] = imread(imagelist[i + numberOfPatternImages + 2], IMREAD_GRAYSCALE);if ((!captured_pattern[0][i].data) || (!captured_pattern[1][i].data)){return;}remap(captured_pattern[1][i], captured_pattern[1][i], map1x, map1y, CV_INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));remap(captured_pattern[0][i], captured_pattern[0][i], map2x, map2y, CV_INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));}// 导入全白全黑背景图案vector<Mat> blackImages;vector<Mat> whiteImages;blackImages.resize(2);whiteImages.resize(2);whiteImages[0] = imread(imagelist[numberOfPatternImages], IMREAD_GRAYSCALE);//42blackImages[0] = imread(imagelist[numberOfPatternImages + 1], IMREAD_GRAYSCALE);//43whiteImages[1] = imread(imagelist[2 * numberOfPatternImages + 2], IMREAD_GRAYSCALE);//86blackImages[1] = imread(imagelist[2 * numberOfPatternImages + 2 + 1], IMREAD_GRAYSCALE);//87//INTER_NEAREST, BORDER_CONSTANT, Scalar()); remap(color, color, map2x, map2y, INTER_NEAREST, BORDER_CONSTANT, Scalar());remap(whiteImages[0], whiteImages[0], map2x, map2y, CV_INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));remap(whiteImages[1], whiteImages[1], map1x, map1y, CV_INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));remap(blackImages[0], blackImages[0], map2x, map2y, CV_INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));remap(blackImages[1], blackImages[1], map1x, map1y, CV_INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 0, 0));// 解码Mat disparityMap;bool decoded = graycode_Decoder->decode(captured_pattern, disparityMap, blackImages, whiteImages, structured_light::DECODE_3D_UNDERWORLD);
0 0
- 4.结构光:遇到的问题
- 格雷码结构光的编码
- 结构光系统的标定
- 光的灵感问题
- 我遇到的结构体问题
- CGAL半边结构遇到的一些问题
- 详解EVENTLOGRECORD结构体遇到的问题
- 线结构光传感器的标定
- 自制的结构光三维扫描系统
- 结构光测量------相机的选择
- 结构光:投影仪的标定(OpenCV)
- sizeof求结构体的大小时遇到的问题
- flask大型程序的结构学习中遇到的问题
- 一个sql中常遇到的表结构转换问题
- 在修改表结构中遇到的问题...
- 一个sql中常遇到的表结构转换问题
- 使用extern声明结构体遇到的问题及解决办法
- Java中使用结构体时遇到的问题
- sizeof and strlen
- spark【例子】count(distinct 字段) 简易版 使用groupByKey和zip
- java Session和Cookie的区别
- iOS开发Provisioning profile "iOS Team Provisioning Profile:xxx" doesn't include signing certificate
- 自定义时间选择器RZDatePickerView
- 4.结构光:遇到的问题
- Carthage 使用
- 几种Servlet加载方式以及在servlet中调用bean对象
- 排序
- Hibername三种状态(瞬时态 持久态 游离态)
- 打包后的apk微信分享依然失败
- Android唯一识别号(设备指纹)的生成及原理
- 用HttpSessionListener与HttpSessionBindingListener实现在线人数统计
- 剑指offer-二叉搜索树的第K个节点