单张图片生成三维点云
配置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;
}
单张图片生成三维点云相关推荐
- 从2D图片生成3D点云
记录两个可以由2D图像生成3D模型的深度学习网络 1.由单张2D图像生成3D点云的深度网络 论文 <A Point Set Generation Network for 3D Object Re ...
- ffmpeg脚本 自动把单张图片生成视频
使用方法:复制代码到文本文档中,保存为1.bat.将单张图片,拖到批处理文件上,脚本会自动执行,在当前目录生成相应的视频文件. -t 5 持续时间为5s s=1920*1080 生成视频的分辨率. 如 ...
- 读论文|利用GAN生成三维点云WarpingGAN: Warping Multiple Uniform Priors for Adversarial 3D Point Cloud Generation
总体评价:这是一篇我认为还是比较简单,而且有改进空间的论文,其主要的思想与普通的GAN的想法是一样的.如下图: 创新点:1.对于latent code的处理,类似于style-gan中的想法,我输入不 ...
- ICON: 从单张图片重建穿衣服人体模型
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨人脸人体重建 来源丨人脸人体重建 马普所最新文章,穿衣服人体重建新方法 ICON (Implic ...
- 使用图片生成gazebo三维模型
上周使用LIRS生成了gazebo能够使用的Dae的三维模型,实现了能够自己搭建自己的仿真三维模型. 1. 生成模型 使用LIRS软件,导入图片,生成对应的dae三维模型. 首先选一个灰度的图片,下面 ...
- 【计算机科学】【2016.12】运动摄影测量中三维点云结构的比较与表征
本文为美国德州A&M大学科珀斯克里斯分校(作者:MICHAEL SCHWIND)的硕士论文,共129页. 运动结构(Structure from Motion,SfM)是一种摄影测量技术,通过 ...
- ICCV 2019 Oral | 三维ZAO脸,单张图片估计人脸几何,效果堪比真实皮肤
点击我爱计算机视觉标星,更快获取CVML新技术 CV君:本文为52CV群友上海科技大学陈安沛同学投稿,介绍了他们ICCV 2019最新人脸3D重建的工作.效果非常赞,代码也已开源,欢迎大家参考- 引言 ...
- 利用背景图片生成词云
本文主要对爬取数据的一些高频词采用词云生成进行可视化展示. 1 爬取csdn的文章 准备txt 和背景图片 建议颜色区分大点 需要的字体 2 安装jieba 和 wordcloud 3 编写代码 fr ...
- 近两年利用毫米波雷达生成的三维点云进行轨迹追踪相关文献
2018年mID: Tracking and Identifying People with Millimeter Wave Radar该文献主要是利用毫米波雷达生成的三维点云进行轨迹追踪,并结合LS ...
- android 照片拼接长图_Android拼接合并图片生成长图-阿里云开发者社区
Android拼接合并图片生成长图 代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放. 假设根目录的Pict ...
最新文章
- 关于sql注入之cookie注入
- jQuery遍历之next()、nextAll()方法使用实例
- CTF-Xortool,windows上的安装与使用
- DOCKERFILE参数注解
- 浅谈UWB室内定位(三)
- springboot2.x 集成百度 uidgenerator
- QT 基础类结构图及核心库
- VDbench 参数信息
- 微型计算机工作原理详细,微型计算机基本工作原理.ppt
- TOPSIS综合评价法
- 程序员博客是否应该晒代码(由摄影而感)
- 大规模病毒入侵,全靠分布式
- Windows系统盘瘦身
- [Audacity][帮助手册][手册内容]认识Audacity
- C Primer Plus学习笔记(二)- 数据和C
- 名帖121 文徵明 小楷《琴赋》
- 干货!7年投稿经验总结教你这样回复审稿意见更有效!
- dependencies devDependencies的区别
- MP4Box使用一二例
- 互联网的下岗潮马上要来