Python使用ImageMagick进行图像处理指南

在图像处理方面,Python是一门广泛使用的编程语言。每当我们为建立模型处理图像数据时,对图像的预处理是至关重要的。在预处理中,我们确保图像具有正确的尺寸和正确的类型。除了pilllow、opencv等,ImageMagick处理图像也很方便。

Imagemagick简介

ImageMagick可创建、编辑、编排或转换位图图像。它可以读取和写入各种格式的图像(超过200种),包括PNG、JPEG、GIF、HEIC、TIFF、DPX、EXR、WebP、Postscript、PDF和SVG等。使用ImageMagick来调整大小、翻转、镜像、旋转、扭曲、剪切和转换图像,调整图像颜色,应用各种特殊效果,或绘制文本、线条、多边形、椭圆和贝塞尔曲线。

ImageMagick的通常在命令行中使用,或者你可以从用你喜欢的编程语言编写的程序中使用这些功能。比如PythonMagick(Python),G2F(Ada),MagickCore(C),MagickWand(C),ChMagick(Ch),ImageMagickObject(COM+),Magick++(C++),JMagick(Java),L-Magick(Lisp),NMagick(Neko/haXe),MagickNet(。 NET)、PascalMagick(Pascal)、PerlMagick(Perl)、MagickWand for PHP(PHP)、IMagick(PHP)、、Magick(R)、RMagick(Ruby)或TclMagick(Tcl/TK)。

ImageMagick利用多个计算线程来提高性能,可以读取、处理或写入百万、千兆或兆像素的图像尺寸。

ImageMagick的官网是https://imagemagick.org。源代码库是https://github.com/ImageMagick/ImageMagick

Imagemagick能做什么?

  • 格式转换:格式转换(如PNG转换成JPEG)。
  • 转换:调整大小、旋转、纠偏、裁剪、翻转或修剪图像。
  • 透明度:使图像的某些部分不可见。
  • 绘制:在图像上添加形状或文字。
  • 装饰:为图像添加边界或框架。
  • 特效:对图像进行模糊、锐化、阈值或调色。
  • 文本和评论:在图像中插入描述性或艺术性文本。
  • 图像渐变:创建一种颜色的渐变混合,其形状是水平、垂直、圆形或椭圆形的。
  • 图像识别:描述图像的格式和属性。
  • 复合:将一个图像重叠在另一个图像上。
  • 蒙太奇:将图像缩略图并列在一个图像画布上。
  • 通用像素失真:纠正或诱导图像失真,包括透视。
  • 形状的形态学:提取特征,描述形状和识别图像中的模式。
  • 划分图像特征。Canny边缘检测,平均移动,Hough线。
  • 电影支持:读和写数字电影工作中使用的常见图像格式。
  • 图像计算器:将一个数学表达式应用于图像或图像通道。
  • 连接部件标记:唯一地标记图像中的连接区域。
  • 离散傅里叶变换:实现正向和逆向DFT。
  • 感知散列:将视觉上相同的图像映射为相同或相似的散列--在图像检索、认证、索引或复制检测以及数字水印中很有用。
  • 复杂文本布局:双向文本支持和塑造。
  • 色彩管理:用色彩配置文件进行精确的色彩管理,或代替--根据色彩空间的要求进行内置的伽玛压缩或扩展。
  • 双边模糊:非线性的、保留边缘的、降噪的平滑过滤器。
  • 高动态范围图像:准确地表现真实场景中发现的广泛的强度水平,从最明亮的阳光直射到最深的黑暗阴影。
  • 加密或破译图像:将普通图像转换为无法理解的胡言乱语,然后再转换回来。
  • 虚拟像素支持:方便访问图像区域外的像素。
  • 大图像支持:读取、处理或写入百万、千兆或兆像素的图像尺寸。
  • 执行线程的支持。ImageMagick是线程安全的,大多数内部算法都支持OpenMP,以利用多核处理器芯片提供的速度优势。
  • 分布式像素缓存:将中间的像素存储卸载到一个或多个远程服务器。
  • 异构分布式处理:某些算法支持OpenCL,以利用在由CPU、GPU和其他处理器组成的异构平台上协同执行的速度优势。
  • iPhone上的ImageMagick:在你的iPhone上转换、编辑或编排图像。

下载Imagemagick

# apt install imagemagick
# pip install wand

读取图像的尺寸

>>> from wand.image import Image
>>> ny = Image(filename ='wugang.jpg')
>>> print(ny.height, ny.width)
324 550

将图像从jpg转换成png

>>> ny_convert = ny.convert('png')
>>> ny_convert.save(filename ='wugang.png')

模糊图像

>>> ny = Image(filename ='wugang.jpg')
>>> ny.blur(sigma = 4)
True
>>> ny.save(filename ="wugang_blur.jpg")

翻转图像

>>> ny = Image(filename ='wugang.jpg')
>>> flip_ny = ny.clone()
>>> flip_ny.flip()
True
>>> flip_ny.save(filename ='flip_wugang.jpg')

旋转图像

>>> ny2 = ny.clone()
>>> ny2.rotate(45)
True
>>> print(ny2.height, ny2.width)
620 620
>>> ny2.save(filename ='rotate_wugang.jpg')

裁剪图像

>>> ny2 = ny.clone()
>>> ny2.crop(50, 90, 200, 300)
True
>>> ny2.save(filename = 'wugang_cropped.jpg')

创建边缘

>>> ny2 = ny.clone()
>>> ny2.edge(radius = 1)
True
>>> ny2.save(filename="edge_wugang.jpg")

素描

>>> ny2 = ny.clone()
>>> ny2.sketch(0.5, 0.0, 98.0)
True
>>> ny2.save(filename="wugang_sketch.jpg")

使用transform_colorspace()函数并传递'grey'作为参数。输出将是黑白素描。

>>> ny2 = ny.clone()
>>> ny2.transform_colorspace('gray')
True
>>> ny2.sketch(0.5, 0.0, 98.0)
True
>>> ny2.save(filename="wugang_sketch_gray.jpg")

灰度素描
同样,我们还可以在图像上应用其他的特殊效果,如添加噪音、polaroid、漩涡、色调、波浪、太阳化等。

调整大小

>>> ny2 = ny.clone()
>>> ny2.resize(200,100)
True
>>> ny2.save(filename="wugang_resize.jpg")

参考资料

将PDF转换为图像

from wand.image import Image

ny = Image(filename ='test.pdf')
ny_converted = ny.convert('jpg')
ny_converted.save(filename='test.pdf.jpg')

添加文字水印

from wand.image import Image
from wand.drawing import Drawing
ny = Image(filename = 'wugang.jpg')
draw = Drawing()
draw.font = '/usr/share/fonts/truetype/arphic/ukai.ttc'
draw.font_size = 20
draw.text(10, 100, '技术支持钉钉或v信 pythontesting')
draw(ny)
ny.save(filename='text wuang.jpg')

linux查看中文字体

$ fc-list | grep -i cn
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 计算机视觉是人工智能最热门的应用领域之一。人工智能技术推动了汽车自动驾驶、机器人以及各种照片处理类软件的巨大发展。...
    魔图互联阅读 1,413评论 0 0
  • 简介 PIL (Python Imaging Library) Python图像处理库,该库支持多种文件格式,提供...
    JackHCC阅读 3,669评论 0 0
  • 简介 本文主要简单介绍一下magick包,主要用于图像处理 可以看出大部分格式都是支持的 读取图像 读取的话可以直...
    taoyan阅读 6,704评论 2 21
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 120,535评论 2 7
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 5,980评论 0 4