拍摄照片怎么标注拍摄地点的精确位置

拍摄照片怎么标注拍摄地点的精确位置,第1张

基本上每个手机都有GPS定位功能,市场上很多手机相机也都支持获取地理位置,在手机里打开相机,找到“设置”-“地理位置”的选项,打开它。再打开GPS定位,当手机搜索到信号后再进行拍照,就会自动显示出地理位置。

首先,在PCL(Point Cloud Learning)中国协助发行的书提供光盘的第9章例1文件夹中,打开名为range_image_creationcpp的代码文件。

解释说明

下面来解析打开源代码中的关键语句。

#include <pcl/range_image/range_imageh> //深度图像头文件

int main (int argc, char argv) {

pcl::PointCloud<pcl::PointXYZ> pointCloud; //定义点云对象

for (float y=-05f; y<=05f; y+=001f) { //循环产生点数据

for (float z=-05f; z<=05f; z+=001f) {

pcl::PointXYZ point;

pointx = 20f - y;

pointy = y;

pointz = z;

pointCloudpointspush_back(point); //循环添加点数据到点云对象

}

}

pointCloudwidth = (uint32_t) pointCloudpointssize();

pointCloudheight = 1; //设置点云对象的头信息

这段程序首先创建一组数据作为点云的数据内容,再设置文件头的信息,整个实现生成一个呈矩形形状的点云。

float angularResolution = (float) ( 10f (M_PI/1800f)); // 按弧度1度

float maxAngleWidth = (float) (3600f (M_PI/1800f)); // 按弧度3600度

float maxAngleHeight = (float) (1800f (M_PI/1800f)); // 按弧度1800度

Eigen::Affine3f sensorPose = (Eigen::Affine3f)Eigen::Translation3f(00f, 00f,00f); //采集位置

pcl::RangeImage::CoordinateFrame coordinate_frame =pcl::RangeImage::CAMERA_FRAME; //深度图像遵循的坐标系统

float noiseLevel=000;

float minRange = 00f;

int borderSize = 1;

这部分定义了创建深度图像时需要的设置参数,将角度分辨率定义为1度,意味着由邻近的像素点所对应的每个光束之间相差1度,maxAngleWidth=360和maxAngleHeight=180意味着,我们进行模拟的距离传感器对周围的环境拥有一个完整的360度视角,用户在任何数据集下都可以使用此设置,因为最终获取的深度图像将被裁剪到有空间物体存在的区域范围。但是,用户可以通过减小数值来节省一些计算资源,例如:对于传感器后面没有可以观测的点时,一个水平视角为180度的激光扫描仪,即maxAngleWidth=180就足够了,这样只需要观察距离传感器前面就可以了,因为后面没有需要观察的场景。sensorPose定义了模拟深度图像获取传感器的6自由度位置,其原始值为横滚角roll、俯仰角pitch、偏航角yaw都为0,coordinate_frame=CAMERA_FRAME说明系统的X轴是向右的,Y轴是向下的,Z轴是向前的,另外一个选择是LASER_FRAME,其X轴向前,Y轴向左,Z轴向上。noiseLevel=0是指使用一个归一化的Z缓冲器来创建深度图像,但是如果想让邻近点集都落在同一个像素单元,用户可以设置一个较高的值,例如noiseLevel=005可以理解为,深度距离值是通过查询点半径为125px的圆内包含的点用来平均计算而得到的。如果minRange>0,则所有模拟器所在位置半径minRange内的邻近点都将被忽略,即为盲区。在裁剪图像时,如果borderSize>0,将在图像周围留下当前视点不可见点的边界。

pcl::RangeImage rangeImage;

rangeImagecreateFromPointCloud(pointCloud, angularResolution, maxAngleWidth, maxAngleHeight, sensorPose, coordinate_frame, noiseLevel, minRange, borderSize);

std::cout << rangeImage << "\n";

其余的代码是使用那些用户给定的参数,从点云创建深度图像,并且在终端下打印出一些信息。

深度图像继承于PointCloud类,它的点类型具有x,y,z和range距离字段,共有三种类型的点集,有效点集是距离大于零的点集,当前视点不可见点集x=y=z=NAN且值域为负无穷大,远距离点集x=y=z=NAN且值域为无穷大。

编译和运行程序

利用光盘提供的CMakeListstxt文件,在cmake中建立工程文件,并生成相应的可执行文件。生成执行文件后,就可以运行了,在cmd中键入命令:

>range_image_creationexe

水印相机无法获取位置的解决办法:

回答

1、进入设置,点击隐私,选择定位服务,进去后找到该项打开定位开关即可。

回答

2、还有就是请检查网络设置是否打开,或是连接了不能上网的wifi。

以上就是关于拍摄照片怎么标注拍摄地点的精确位置全部的内容,包括:拍摄照片怎么标注拍摄地点的精确位置、如何通过深度相机获取空间物体位置信息、水印相机获取不了位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9595723.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存