如何将必须的Google Photo Sphere XMP元数据添加到全景图像中?

4

有人知道如何以编程方式向等距圆柱(360)图像添加Google照片球XMP元数据吗?或者如何删除并向等距圆柱(360)图像添加新的照片球XMP元数据?

以下是示例:

<rdf:Description rdf:about="" xmlns:GPano="http://ns.google.com/photos/1.0/panorama/">
    <GPano:UsePanoramaViewer>True</GPano:UsePanoramaViewer>
    <GPano:CaptureSoftware>Photo Sphere</GPano:CaptureSoftware>
    <GPano:StitchingSoftware>Photo Sphere</GPano:StitchingSoftware>
    <GPano:ProjectionType>equirectangular</GPano:ProjectionType>
    <GPano:PoseHeadingDegrees>350.0</GPano:PoseHeadingDegrees>
    <GPano:InitialViewHeadingDegrees>90.0</GPano:InitialViewHeadingDegrees>
    <GPano:InitialViewPitchDegrees>0.0</GPano:InitialViewPitchDegrees>
    <GPano:InitialViewRollDegrees>0.0</GPano:InitialViewRollDegrees>
    <GPano:InitialHorizontalFOVDegrees>75.0</GPano:InitialHorizontalFOVDegrees>
    <GPano:CroppedAreaLeftPixels>0</GPano:CroppedAreaLeftPixels>
    <GPano:CroppedAreaTopPixels>0</GPano:CroppedAreaTopPixels>
    <GPano:CroppedAreaImageWidthPixels>4000</GPano:CroppedAreaImageWidthPixels>
    <GPano:CroppedAreaImageHeightPixels>2000</GPano:CroppedAreaImageHeightPixels>
    <GPano:FullPanoWidthPixels>4000</GPano:FullPanoWidthPixels>
    <GPano:FullPanoHeightPixels>2000</GPano:FullPanoHeightPixels>
    <GPano:FirstPhotoDate>2012-11-07T21:03:13.465Z</GPano:FirstPhotoDate>
    <GPano:LastPhotoDate>2012-11-07T21:04:10.897Z</GPano:LastPhotoDate>
    <GPano:SourcePhotosCount>50</GPano:SourcePhotosCount>
    <GPano:ExposureLockUsed>False</GPano:ExposureLockUsed>
</rdf:Description>
2个回答

1

Exiftool 因为每个命名空间都会错误创建一个 "description" 标签,所以无法将 Google Photosphere XMP 元数据注入 JPG 文件 (可能是因为这个原因)

可能 Exiv2 可以做到这一点,但我还没有测试过。

或者您可以编程调用 VR180PhotoTools 套件中的程序 equiToVr180Photo.exe 来正确创建兼容卡片板的图像。

此命令将一个自上而下的全景图像转换为卡片板格式:

equiToVr180Photo.exe -f tb -i immagine-top-bottom.jpg -o cardboard.vr.jpg  

在这里您可以找到C#源代码:https://github.com/Vargol/VR180PhotoTools

请查看文件equiToVR180Photo.cs的第99行:

 string xmpMetadata = jpegFile.GetXmpMetadata(jpegs.GetRightEye.Width, jpegs.GetRightEye.Height, widthDegrees, heightDegrees, extendedMd5Hash);

 // insert the xmp in the jpeg..
 jpegFile.WriteVr180Jpeg(jpegs, xmpMetadata, extendedMd5Hash, extendedXmpXml, outJpeg);

GetXmpMetadata() 实际上不是“获取”,而是“创建”所有需要的 XMP 元数据,然后由 jpegFile.WriteVr180Jpeg() 将其写入 jpg 文件。


1

使用 ExifTool https://www.sno.phy.queensu.ca/~phil/exiftool/,在 cpanel 上安装 Perl 后,您可以输入以下命令添加元数据:

exiftool -XMP-GPano:ProjectionType='equirectangular' /public_html/panos/image_name.jpg


ProjectionType 标签不够,还需要十几个进一步的标签;而且 exiftool 也无法正常工作,它会错误地为每个命名空间添加“description”标签。 - jumpjack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接