最近在做百度OCR图片文字识别时,因为免费版OCR接口调用次数有限,就想把多张图片合并成一张进行文字识别。这就需要在代码中进行图片合并操作,在查找图片批量合并方案时,看到了linux的convert命令,可以将多张图片合并,且使用特别方便,纪录一下convert是如何使用的。
convert命令属于ImageMagick工具包,具有图片创建、编辑,转换图像格式,以及调整图像大小、模糊、裁切、除去杂点、抖动 、绘图、翻转、合并、重新采样等功能。
要想使用covert命令,首先要安装ImageMagick包。
ImageMagick包介绍
ImageMagick是一款创建、编辑、合成,转换图像的命令行工具,支持格式超过 200 种,包括常见的 PNG, JPEG, GIF, HEIC, TIFF, DPX, EXR, WebP, Postscript, PDF, SVG 等。功能包括调整大小,翻转,镜像,旋转,扭曲,修剪和变换图像,调整图像颜色,应用各种特殊效果,或绘制文本,线条,多边形,椭圆和贝塞尔曲线等。对于图片的处理,ImageMagick基本可以实现任何常用操作。
官网:https://imagemagick.org/
中文镜像站: http://www.imagemagick.com.cn/index.html
安装
ImageMagick支持Linux, Windows, Mac OS X, iOS, Android OS 等平台。
安装参考文档地址:https://www.imagemagick.org/script/download.php
我以mac为例,安装方式如下:
brew install imagemagick
安装ImageMagick工具包后,即可使用其工具命令。
基本命令
ImageMagick 包括一组命令行工具来操作图片,安装好 ImageMagick 后,终端就可以使用如下命令了。
magick: 创建、编辑图像,转换图像格式,以及调整图像大小、模糊、裁切、除去杂点、抖动 ( dither )、绘图、 翻转、合并、重新采样等。
convert: 等同于 magick 命令。
identify: 输出一个或多个图像文件的格式和特征信息,如分辨率、大小、尺寸、色彩空间等。
mogrify: 与 magick 功能一样,不过不需要指定输出文件,自动覆盖原始图像文件。
composite: 将一个图片或多个图片组合成新图片。
montage: 组合多个独立的图像来创建合成图像。每个图像都可以用边框,透明度等特性进行装饰。
compare: 从数学和视觉角度比较源图像与重建图像之间的差异。
display: 在任何 X server 上显示一个图像或图像序列。
animate: 在任何 X server 上显示图像序列。
import: 保存 X server 上的任何可见窗口并把它作为图像文件输出。可以捕捉单个窗口,整个屏幕或屏幕的任意 矩形部分。
conjure: 解释并执行 MSL ( Magick Scripting Language ) 写的脚本。
stream: 一个轻量级工具,用于将图像或部分图像的一个或多个像素组件流式传输到存储设备。在处理大图像或 原始像素组件时很有用。
各个命令具体介绍,参考地址: https://imagemagick.org/script/command-line-tools.php
命令使用格式
基本命令的使用,遵循 Unix 风格的标准格式:
command [options] input_image output_image
比如我们将一张宽高 300x300 的图片 goods.png 转换成 200x200 的goods.jpg,可以这样用
convert -resize 200x200 goods.png goods.jpg
-resize 定义图片尺寸,ImageMagick 所有的选项参数都在这个【命令行选项手册】。
图片合并实例
接下来介绍我在OCR文字识别中将多张图片合并一张方法,代码合并使用convert命令,如我有图片1.jpg、2.jpg、3.jpg,我想将这三张图片合并成1张并命名为a.jpg,命令如下:
convert -append 1.jpg 2.jpg 3.jpg a.jpg
Python代码:
import os
imgDir = ''
pathDir = sorted(filter(is_img, os.listdir(imgDir)))
# 通过拼接convert命令,进行图片合并
tmp = 0
shell <