配置pcl:参照博客http://blog.csdn.net/chentravelling/article/details/43451589

// C++ 标准库

#include <iostream>  
#include <string>  
using namespace std;  
  
// OpenCV 库  
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
  
// PCL 库  
//#include <pcl/io/pcd_io.hpp>  
//#include <pcl/point_types.h>

#include <pcl/visualization/cloud_viewer.h>  
#include <iostream>  
#include <pcl/io/io.h>  
#include <pcl/io/pcd_io.h>

// 定义点云类型  
typedef pcl::PointXYZRGBA PointT;  
typedef pcl::PointCloud<PointT> PointCloud;   
  
// 相机内参  
const double camera_factor = 1000;  
const double camera_cx = 325.5;  
const double camera_cy = 253.5;  
const double camera_fx = 518.0;  
const double camera_fy = 519.0;

int user_data;  
  
void viewerOneOff (pcl::visualization::PCLVisualizer& viewer) 
{  
    viewer.setBackgroundColor (0, 0, 0);    
   
}  
  
void viewerPsycho (pcl::visualization::PCLVisualizer& viewer)  
{  
    static unsigned count = 0;  
    std::stringstream ss;  
    ss << "Once per viewer loop: " << count++;  
    viewer.removeShape ("text", 0);  
    viewer.addText (ss.str(), 200, 300, "text", 0);  
  
    //FIXME: possible race condition here:  
    user_data++;  
}  
  
  
// 主函数   
int main( int argc, char** argv )  
{  
    // 读取./data/rgb.png和./data/depth.png,并转化为点云  
    //int m=0,n=0;
    // 图像矩阵  
    cv::Mat rgb, depth;  
    // 使用cv::imread()来读取图像  
    
    //for(m;m<301;m++)
//char szName_col[56]={0};
//sprintf(szName_col, "D:\Program Files (x86)\visual studio 2010\Projects\dep_corlor\dep_corlor\deng\1",m);

rgb = cv::imread( "./1/1.jpg" );  
    // rgb 图像是8UC3的彩色图像  
    // depth 是16UC1的单通道图像,注意flags设置-1,表示读取原始数据不做任何修改  
    depth = cv::imread( "./2/1.jpg", -1 );  
  
    // 点云变量  
    // 使用智能指针,创建一个空点云。这种指针用完会自动释放。  
    PointCloud::Ptr cloud ( new PointCloud );  
    // 遍历映射图  
    for (int m = 0; m < depth.rows; m++)  
        for (int n=0; n < depth.cols; n++)  
        {  
            // 获取映射图中(m,n)处的值  
            ushort d = depth.ptr<ushort>(m)[n];  
            // d 可能没有值,若如此,跳过此点  
            if (d == 0)  
                continue;  
            // d 存在值,则向点云增加一个点  
            PointT p;  
  
            // 计算这个点的空间坐标  
            p.z = double(d) / camera_factor;  
            p.x = (n - camera_cx) * p.z / camera_fx;  
            p.y = (m - camera_cy) * p.z / camera_fy;  
              
            // 从rgb图像中获取它的颜色  
            // rgb是三通道的BGR格式图,所以按下面的顺序获取颜色  
            p.b = rgb.ptr<uchar>(m)[n*3];  
            p.g = rgb.ptr<uchar>(m)[n*3+1];  
            p.r = rgb.ptr<uchar>(m)[n*3+2];  
  
            // 把p加入到点云中  
            cloud->points.push_back( p );  
        }  
    pcl::visualization::CloudViewer viewer("Cloud Viewer"); 
    viewer.showCloud(cloud);  
    viewer.runOnVisualizationThreadOnce (viewerOneOff);  
    viewer.runOnVisualizationThread (viewerPsycho);  
    while (!viewer.wasStopped ())  
    { 
        user_data++;  
    }  
    return 0;

}

单张图片生成三维点云相关推荐

  1. 从2D图片生成3D点云

    记录两个可以由2D图像生成3D模型的深度学习网络 1.由单张2D图像生成3D点云的深度网络 论文 <A Point Set Generation Network for 3D Object Re ...

  2. ffmpeg脚本 自动把单张图片生成视频

    使用方法:复制代码到文本文档中,保存为1.bat.将单张图片,拖到批处理文件上,脚本会自动执行,在当前目录生成相应的视频文件. -t 5 持续时间为5s s=1920*1080 生成视频的分辨率. 如 ...

  3. 读论文|利用GAN生成三维点云WarpingGAN: Warping Multiple Uniform Priors for Adversarial 3D Point Cloud Generation

    总体评价:这是一篇我认为还是比较简单,而且有改进空间的论文,其主要的思想与普通的GAN的想法是一样的.如下图: 创新点:1.对于latent code的处理,类似于style-gan中的想法,我输入不 ...

  4. ICON: 从单张图片重建穿衣服人体模型

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨人脸人体重建 来源丨人脸人体重建 马普所最新文章,穿衣服人体重建新方法 ICON (Implic ...

  5. 使用图片生成gazebo三维模型

    上周使用LIRS生成了gazebo能够使用的Dae的三维模型,实现了能够自己搭建自己的仿真三维模型. 1. 生成模型 使用LIRS软件,导入图片,生成对应的dae三维模型. 首先选一个灰度的图片,下面 ...

  6. 【计算机科学】【2016.12】运动摄影测量中三维点云结构的比较与表征

    本文为美国德州A&M大学科珀斯克里斯分校(作者:MICHAEL SCHWIND)的硕士论文,共129页. 运动结构(Structure from Motion,SfM)是一种摄影测量技术,通过 ...

  7. ICCV 2019 Oral | 三维ZAO脸,单张图片估计人脸几何,效果堪比真实皮肤

    点击我爱计算机视觉标星,更快获取CVML新技术 CV君:本文为52CV群友上海科技大学陈安沛同学投稿,介绍了他们ICCV 2019最新人脸3D重建的工作.效果非常赞,代码也已开源,欢迎大家参考- 引言 ...

  8. 利用背景图片生成词云

    本文主要对爬取数据的一些高频词采用词云生成进行可视化展示. 1 爬取csdn的文章 准备txt 和背景图片 建议颜色区分大点 需要的字体 2 安装jieba 和 wordcloud 3 编写代码 fr ...

  9. 近两年利用毫米波雷达生成的三维点云进行轨迹追踪相关文献

    2018年mID: Tracking and Identifying People with Millimeter Wave Radar该文献主要是利用毫米波雷达生成的三维点云进行轨迹追踪,并结合LS ...

  10. android 照片拼接长图_Android拼接合并图片生成长图-阿里云开发者社区

    Android拼接合并图片生成长图 代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放. 假设根目录的Pict ...

最新文章

  1. 关于sql注入之cookie注入
  2. jQuery遍历之next()、nextAll()方法使用实例
  3. CTF-Xortool,windows上的安装与使用
  4. DOCKERFILE参数注解
  5. 浅谈UWB室内定位(三)
  6. springboot2.x 集成百度 uidgenerator
  7. QT 基础类结构图及核心库
  8. VDbench 参数信息
  9. 微型计算机工作原理详细,微型计算机基本工作原理.ppt
  10. TOPSIS综合评价法
  11. 程序员博客是否应该晒代码(由摄影而感)
  12. 大规模病毒入侵,全靠分布式
  13. Windows系统盘瘦身
  14. [Audacity][帮助手册][手册内容]认识Audacity
  15. C Primer Plus学习笔记(二)- 数据和C
  16. 名帖121 文徵明 小楷《琴赋》
  17. 干货!7年投稿经验总结教你这样回复审稿意见更有效!
  18. dependencies devDependencies的区别
  19. MP4Box使用一二例
  20. 互联网的下岗潮马上要来

热门文章

  1. quartz mysql表文件_quartz 持久化 数据库表
  2. 如何给Ubuntu系统清理垃圾
  3. 强化学习之Q函数的个人理解
  4. 2013-2014年度总结
  5. 美国人物传记电影:巴顿将军
  6. 电脑有弹窗广告怎么办?真实个人经验分享
  7. windows系统ftp服务器,Windows下使用的FTP服务器软件
  8. 智能网联时代汽车智能座舱操作系统的发展
  9. 仅15%的L2智能驾驶搭载DMS,「安全」背后的市场爆发在即
  10. 小米 10s fastboot下 刷入 rec