検索

この記事では、python に関する関連知識を提供します。主に PIL ライブラリの関連問題を整理しています。PIL ライブラリは、強力な画像処理機能を備えたサードパーティ ライブラリです。リッチ ピクセルとカラー演算機能は画像のアーカイブやバッチ処理にも使えますので、ぜひ見ていきましょう。

Python画像処理PILライブラリ

推奨学習: python

PIL ライブラリの使用

キー ポイント: PIL ライブラリは、強力な画像処理機能を備えたサードパーティ ライブラリで、豊富なピクセルおよびカラー操作機能が含まれているだけでなく、画像のアーカイブやバッチ処理にも使用できます。

1. PIL ライブラリの概要

PIL (Python Image Library) ライブラリは、Python 言語のサードパーティ ライブラリであり、pip を通じてインストールする必要があります。道具。 PILライブラリのインストール方法は以下の通りですが、インストールライブラリの名前はpillowです。

:\>pip install pillow #或者 pip3 install pillow

PIL ライブラリは、画像の保存、表示、処理をサポートしています。ほぼすべての画像形式を処理でき、拡大縮小、トリミング、オーバーレイ、画像への線、画像、テキストの追加などの操作を実行できます。
PIL ライブラリは主に画像アーカイブと画像処理の運動エネルギーのニーズを満たすことができます
(1) 画像アーカイブ: 画像のバッチ処理、画像プレビューの生成、画像フォーマット変換など。
(2) 画像処理:基本的な画像処理、ピクセル処理、色処理など。
PIL ライブラリには、機能に応じて合計 21 個の画像関連クラスが含まれており、これらのクラスはサブライブラリ
または PIL ライブラリ内のモジュールとみなすことができます。
Image、ImageChops、ImageColor、ImageCrackCode、ImageDraw.ImageEnhance、ImageFile、ImageFilelO、ImageFilter、ImageFont、ImageGL、ImageGrab、Imagemath、ImageOps、ImagePalette、ImagePath.ImageQt、ImageSequence、ImageStat ImageTk、ImageWin
PIL に焦点を当てるlibrary 最も一般的に使用されるサブライブラリ: Image、ImageFilter、ImageEnhance。

2. PIL ライブラリ Image クラスの解析

Image は PIL の最も重要なクラスで、画像を表します このクラスの導入方法は次のとおりです。 ##

>>>from PIL import Image
PIL では、任意の画像ファイルを Image オブジェクトで表すことができます。 Image クラスの画像の読み込みと作成メソッドは以下のとおりです (計 5 つ):

MethodDescriptionImage.open(filename)パラメータに従って画像ファイルをロードImage.new(mode, size, color)##Image.open(StringlO.StringlO(buffer))文字列から画像を取得しますImage.frombytes(mode, size, data)ピクセル データに基づいて画像を作成するImage.verify() 画像ファイルの整合性をチェックして例外を返しますImage を通じて画像ファイルを開く場合、画像のラスター データは直接保存されません。デコードまたはロードされると、プログラムは画像ファイルのヘッダー内のメタデータ情報を読み取るだけで、画像の形式、色、​​サイズなどを識別します。したがって、画像の保存方法や圧縮方法に関係なく、ファイルを開くのは非常に高速になります。 画像ファイルをロードするための最も単純な形式は次のとおりで、後続のすべての操作は im で機能します。
指定されたパラメータに基づいて新しい画像を作成します
>>>from PIL import Image>>>im = Image.open ("a.jpg")

IDLE インタラクティブ モードを使用して画像ファイルを処理する場合は、ファイルのフル パスを使用することをお勧めします。Python ファイル形式を使用する場合は、相対パスを使用し、ファイルとプログラムをディレクトリ。
Image クラスには、表に示すように、画像を処理するための 4 つの共通属性があります (合計 4 つ)


AttributesDescriptionImage.format画像の形式またはソースを識別します。画像がファイルから読み込まれない場合、値は None画像のカラー モード。「L」はグレースケール イメージ、「RGB」はトゥルー カラー イメージ、「CMYK」は公開されたイメージです画像の密度と高さ、単位はピクセル(px)、戻り値はタプル(tuple)ですPalette 属性は、ImagePalette タイプを返します次のように、読み取った画像ファイルのプロパティを表示します:
>>>print (im. format, im.size, im.mode)JPEG (900, 598) RGB
画像は、GIF、FLI、FLC、TIFF、その他の形式のファイルを含むシーケンス画像ファイルも読み取ることができます。 open() メソッドは、画像を開くときにシーケンスの最初のフレームを自動的に読み込みます。また、seek() メソッドと Tell() メソッドを使用して、異なるフレーム間を移動できます。
## になります。 #Image.mode
Image.size
Image.palette
Image クラスのシーケンス画像操作メソッド (計 2 つ):


Method Description##Image.seek(frame)画像内の指定されたフレームにジャンプして戻ります現在のフレームのシーケンス番号を返します
Image.tell()

【实例1】GIF文件图像提取
对一个GIF格式动态文件,提取其中各帧图像,并保存为文件。

from PIL import Image#读入一个GIF文件im = Image.open("pybit.gif")try:
	im.save('picframe{:02d).png'.format(im.tell()))
	while True:
		im.seek(im.tel1 ()+1)
		im.save('picframe{:02d).png'.format(im.tell()))except:print("处理结束")

实例1展示了一种采用try-except编写程序的方法,通过seek()方法和save()方法配合提取GIF图像格式的每一帧,并保存为文件。
Image类的图像转换和保存方法 (共3个) 如表所示。

方法 描述
Image.save(filename, format) 将图像保存为filename文件名,format是图片格式
Image.convert(mode) 使用不同的参数,转换图像为新的模式
Image.thumbnail(size) 创建图像的缩略图,size是缩略图尺寸的二元元组

其中,save()方法有两个参数:文件名filename和图像格式format。如果调用时不指定保存格式,如微实例1,PIL将自动根据文件名filename后缀存储图像;如果指定格式,则按照格式存储。搭配采用open()和save()方法可以实现图像的格式转换,例如,将 jpg格式转换为png格式」代码如下。需要注意,Image 类的 save()方法主要用于保存文件到硬盘,PIL库还提供了功能更强大的格式转换方法。

im = Image.open("a.jpg")im.save("a.png")

Image类可以缩放和旋转图像,其中,rotate(方法以逆时旋转的角度值作为参数来旋转图像。
Image类的图像旋转和缩放方法(共2个):

方法 描述
Image.resize(size) 按size大小调整图像,生成副本
Image.rotate(angle) 按angle角度旋转图像,生成副本

Image类能够对每个像素点或者一幅RGB图像的每个通道单独进行操作。split()方法能够将RGB 图像各颜色通道提取出来;
merge()方法能够将各独立通道再合成一幅新的图像。
lmage类的图像像素和通道处理方法(共4个):

方法 描述
Image.point(func) 根据函数func的功能对每个元素进行运算,返回图像副本
Image.split() 提取RGB图像的每个颜色通道,返回图像副本
Image.merge(mode,bands) 合并通道,其中mode表示色彩,bands表示新的色彩通道
Image.blend(im1,im2,alpha) 将两幅图片iml和im2按照如下公式插值后生成新的图像:im1 (1.0-alpha) + im2 alpha

【实例2】图像的颜色交换
交换图像中的颜色。可以通过分离RGB图片的3个颜色通道实现颜色交换。

from PIL import Imageim = Image.open('a.jpg')r, g, b = im.split()om = Image.merge("RGB" , (b, g, r))om.save('aBGR.jpg')

运行结果:
Python画像処理PILライブラリ
原图:
Python画像処理PILライブラリ

操作图像的每个像素点需要通过函数实现,可以采用(lambda)函数和point()方法,例子如下,显示效果如图7所示。

>>>im=Image.apen('a.jpg')#打开文件>>>>r,g,b=im.splitO#获得RGB通道数据>>>>newg=g.point(lambda i:i*0.9)#将G通道颜色值变为原来的0.9>>>>newb=b.point(lambda i:i>>>om=Image.merge(im.mode,(r,newg,newb)#将3个通道合成为新图>>>>om.save('new_a.jpg')#输出图片

3.图像的过滤和增强

PIL库的ImageFilter类和ImageEnhance类提供了过滤图像和增强图像的方法。
ImageFilter类共提供10种预定义图像过滤方法(共10个):

方法表示 描述
ImageFilter.BLUR 图像的模糊效果
ImageFilter.CONTOUR 图像的轮廓效果
ImageFilter.DETAIL 图像的细节效果
ImageFilter.EDGE_ENHANCE 图像的边界加强效果
ImageFilter.EDGE_ENHANCE_MORE 图像的阈值边界加强效果
ImageFilter.EMBOSS 图像的浮雕效果
ImageFilter.SMOOTHL 图像的平滑效果
ImageFilter.FIND_EDGES 图像的边界效果
ImageFilter.SMOOTH_MORE 图像的阈值平滑效果
ImageFilter.SHARPEN 图像的锐化效果

利用Image类的filter()方法可以使用ImageFilter类,使用方式如下:

Image.filter(ImageFilter.fuction)

【实例3】图像的轮廓获取。
获取图像的轮廓,代码如下,程序执行效果如图所示,图片变得更加抽象、更具想象空间!

from PIL import Imagefrom PIL import ImageFilterim = Image.open('a.jpg')om = im.filter(ImageFilter.CONTOUR)om.save('aContour.jpg')

运行结果:
Python画像処理PILライブラリ
原图:
Python画像処理PILライブラリ
ImageEnhance类提供了更高级的图像增强功能,如调整色彩度、亮度、对比度、锐化等。
ImageEnhance类的图像增强和滤镜方法(共5个):

方法 描述
ImageEnhance.enhance(factor) 对选择属性的数值增强factor倍
ImageEnhance.Color(im) 调整图像的颜色平衡
ImageEnhance.Contrast(im) 调整图像的对比度
ImageEnhance.Brightness(im) 调整图像的亮度
ImageEnhance.Sharpness(im) 调整图像的锐度

【实例4】图像的对比度增强。
增强图像的对比度为初始的20倍。代码如下,程序执行效果如图7所示。

from PIL import Imagefrom PIL import ImageEnhanceim = Image.open('a.jpg')om = ImageEnhance.Contrast(im)om.enhance(20).save(aEnContrast.jpg')

运行结果:
Python画像処理PILライブラリ
原图:Python画像処理PILライブラリ

推荐学习:python

以上がPython画像処理PILライブラリの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Python:自動化、スクリプト、およびタスク管理Python:自動化、スクリプト、およびタスク管理Apr 16, 2025 am 12:14 AM

Pythonは、自動化、スクリプト、およびタスク管理に優れています。 1)自動化:OSやShutilなどの標準ライブラリを介してファイルバックアップが実現されます。 2)スクリプトの書き込み:Psutilライブラリを使用してシステムリソースを監視します。 3)タスク管理:スケジュールライブラリを使用してタスクをスケジュールします。 Pythonの使いやすさと豊富なライブラリサポートにより、これらの分野で優先ツールになります。

Pythonと時間:勉強時間を最大限に活用するPythonと時間:勉強時間を最大限に活用するApr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境