我正在将使用智能手机拍摄的文档照片上传到我的Linux服务器。在我的Linux服务器上,我使用ImageMagick剪切边缘并进行一些处理(如灰色编码),使其看起来像扫描文档。
下面是一张示例图片。
我想修剪图像,以便只选择纸张,并进行进一步处理,使其看起来像扫描图像,类似于凸轮扫描仪。
注意:我希望ImageMagick工具的参数是通用的,这样我就可以使用相同的命令行选项来处理在不同光照条件下拍摄的图像。
答案 0 :(得分:1)
我同意@Mark。但是,我可以提供一个起点,可以帮助您朝着正确的方向前进:
隔离纸张 假设纸张与背景形成鲜明对比,您可以使用以下内容:
## make the background transparent
convert 'input_image' \( -clone 0 -fill black -fuzz 10% +opaque "rgb(1,1,1)" -transparent black \) -delete 0 'transp_image'
您必须更改rgb颜色值以匹配纸张的“白色”颜色。 imagemagick中的display
命令对此有很好的效用。您也可以使用-fuzz
百分比来隔离纸张。
删除背景:希望上面的代码能让文字外的所有区域都透明,在这种情况下你可以修剪背景:
## trim the transparent background away
convert 'transp_image' -trim 'isolat_image'
从那里你可以做更好的事情,比如改变视角。尝试在imagemagick(http://www.imagemagick.org/Usage/distorts/#perspective)中查看-distort
。虽然我不确定如何将循环中的失真应用于手工拍摄的图片 - 但每张图片可能需要特定的输入参数。