问题描述
我正在安装 spherical/360-degree cameras 的远程网络,并且需要让它们生成的图像都与某物(北)对齐。问题是,相机最终可能会面向任何随机方向安装,因此我需要移动/偏移(水平)图像,并将图像边界外的任何内容包裹到另一侧。
在安装每个摄像头后拍摄样本图像后,我将知道偏移图像的正确像素值,并能够在每个摄像头的基础上指定偏移值。
this article 的前半部分解释了如何在 Photoshop 中执行此操作(滤镜菜单 > 其他 > 偏移,指定偏移像素值,然后启用“环绕”选项)。 Photoshop 按定义的像素数偏移图像,多余的部分会自动移动到图像的另一侧,以填充因移动图像而产生的间隙。
在 Linux (Raspbian) 环境中,我只需要通过命令行自动偏移图像并将多余的部分包裹到图像的另一侧,这样图像的任何部分实际上都不会丢失。我无法使用 GUI 来执行此操作,因为我们长期讨论的是数百万张图像。
我尝试使用 Imagemagick 的几何偏移工具 (convert -geometry +0+100 R0011996.JPG
) 执行此操作,但是 a) 我不知道如何实际使用它,并且 b) 似乎没有像“ Photoshop 中的环绕”选项。
我刚刚意识到 GIMP 有 an equivalent tool 和 a command-line interface 并尝试过,但找不到任何像样的文档。我找到了程序浏览器,它说使用“gimp-drawable-offset”。我尝试了以下方法,但失败了:
gimp -i -b '(gimp-drawable-offset "R0011996.JPG" 1 2 300 0)' -b '(set! drawable (car (gimp-image-get-active-layer image)))' -b '(gimp-quit 0)'
批处理命令遇到执行错误:错误:类型无效 gimp-drawable-offset 的参数 1
和
gimp -i -b '(gimp-drawable-offset 1 2 300 0)' -b '(set! drawable (car (gimp-image-get-active-layer "R0011996.JPG")))' -b '(gimp-quit 0)'
批处理命令遇到执行错误:错误:无效的数量 gimp-drawable-offset 的参数(预期为 5,但收到 4)
批处理命令遇到执行错误:错误:类型无效 参数 1 到 gimp-image-get-active-layer
还有……
gimp -i -b '(gimp-drawable-offset "R0011996.JPG" TRUE 2 300 0)' -b '(set! drawable (car (gimp-image-get-active-layer image)))' -b '(gimp-quit 0)'
批处理命令遇到执行错误:错误:类型无效 gimp-drawable-offset 的参数 1
……还有……
gimp -i -b '(gimp-drawable-offset "R0011996.JPG" TRUE 2 300 0)' -b '(set! drawable (car (gimp-image-get-active-layer "R0011996.JPG")))' -b '(gimp-quit 0)'
批处理命令遇到执行错误:错误:类型无效 gimp-drawable-offset 的参数 1
批处理命令遇到执行错误:错误:类型无效 参数 1 到 gimp-image-get-active-layer
关于如何实现这一目标有什么建议吗?
提前致谢。
解决方法
感谢 Xenoid,他在评论中做出了回答。解决方法很简单:
convert input.jpg -roll +400+0 output.jpg
其中 400 是像素的 x 偏移,0 是像素的 y 偏移(如果需要,您也可以使用负值来反转偏移方向)。 请参阅“像坏电视一样滚动图像”here 部分。