【发布时间】:2019-09-07 19:34:30
【问题描述】:
我正忙于一些无人机测绘。但是,图像中的高度值在重复飞行任务(最高 120m)之间非常不一致。我用来将我的无人机图像拼接成正射镶嵌图的程序认为无人机在地下飞行,因为图像高度低于实际的地面高度。
为了解决这个问题,我想批量编辑所有图像的高度值,方法是将实际地面高度和无人机高度之间的差异直接添加到图像的 EXIF 中。
例如 原始图像高度 = 250m。编辑后的图像高度 = 250m+x
我找到了exiftoolr R 包,它允许您通过使用独立的 ExifTool 和 Perl 程序来读取和写入 EXIF 数据(参见此处:https://github.com/JoshOBrien/exiftoolr)
这是我目前的代码:
library(exiftoolr)
#Object containing images in directory
image_files <-dir("D:/....../R/EXIF_Header_Editing/Imagery",full.names=TRUE)
#Reading info
exif_read(image_files, tags = c("filename", "AbsoluteAltitude")) #Only interested in "filename" and "AbsoluteAltitude"
#Saving to new variable
altitude<-list(exif_read(image_files, tags=c("filename","AbsoluteAltitude")))
这是一些输出的样子:
FileName AbsoluteAltitude
1 DJI_0331.JPG +262.67
2 DJI_0332.JPG +262.37
3 DJI_0333.JPG +262.47
4 DJI_0334.JPG +262.57
5 DJI_0335.JPG +262.47
6 DJI_0336.JPG +262.57
ext.
我知道需要将 x 添加到列表中的每个“AbsoluteAltitude”条目,然后用这个新调整的高度值覆盖现有的图像高度值,而不编辑任何其他重要的 EXIF 信息。
有什么想法吗?
我有一个允许我批量编辑 EXIF 高度的程序,但这会使所有的值都相同,我需要保持值之间的变化。
提前致谢
【问题讨论】: