목차
PIL 라이브러리 사용
1. PIL 라이브러리 개요
2. PIL 라이브러리 이미지 클래스 분석
3.图像的过滤和增强
백엔드 개발 파이썬 튜토리얼 Python 이미지 처리 PIL 라이브러리

Python 이미지 처리 PIL 라이브러리

Jun 23, 2022 pm 12:22 PM
python

이 기사에서는 PIL 라이브러리와 관련된 문제를 주로 정리하는 python에 대한 관련 지식을 제공합니다. 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 라이브러리 라이브러리 시스템: Image, ImageFilter, ImageEnhance.

2. PIL 라이브러리 이미지 클래스 분석

이미지는 PIL의 가장 중요한 클래스입니다. 이 클래스를 소개하는 방법은 다음과 같습니다.

>>>from PIL import Image
로그인 후 복사

PIL에서는 모든 이미지 파일이 이미지를 사용할 수 있습니다. 객체 표현. Image 클래스의 이미지 읽기 및 생성 방법은 다음과 같습니다(총 5개):

Method Description
Image.open(filename) 매개변수에 따라 이미지 파일 로드
Image.new(모드, 크기, 색상) 주어진 매개변수를 기반으로 새 이미지 만들기
Image.open(StringlO.StringlO(buffer)) 문자열에서 이미지 가져오기
Image.frombytes( 모드, 크기, 데이터) 픽셀 데이터를 기반으로 이미지 생성
Image.verify() 이미지 파일의 무결성을 확인하고 예외를 반환합니다

이미지를 열 때 이미지를 통한 파일, 이미지의 래스터 형식 데이터는 디코딩되거나 직접 로드되지 않습니다. 프로그램은 이미지 파일의 헤더에 있는 메타데이터 정보만 읽습니다. 이 부분은 형식, 색상, 크기 등을 식별합니다. 이미지의. 따라서 이미지 저장 및 압축 방법에 관계없이 파일을 여는 속도가 매우 빠릅니다.
이미지 파일을 로드하려면 가장 간단한 형식은 다음과 같습니다. 그 이후에는 모든 작업이 im에서 작동합니다.

>>>from PIL import Image>>>im = Image.open ("a.jpg")
로그인 후 복사

IDLE 대화형 모드를 사용하여 이미지 파일을 처리하는 경우 파일의 전체 경로를 사용하는 것이 좋습니다. Python 파일 형식을 사용하는 경우 상대 경로를 사용하고 파일과 프로그램을 디렉터리에 넣는 것이 좋습니다.
Image 클래스에는 표에 표시된 것처럼 이미지 처리를 위한 4개의 공통 속성이 있습니다(총 4개).

Attributes Description
Image.format 다음과 같은 경우 이미지 형식이나 소스를 식별합니다. 이미지가 파일에서 읽히지 않았으며 값은 None
Image.mode 이미지의 색상 모드, "L"은 회색조 이미지, "RGB"는 트루 컬러 이미지, "CMYK"입니다. 게시된 이미지
Image.size 이미지 밀도 및 높이, 단위는 픽셀(px), 반환 값은 튜플(튜플)
Image.palette Palette 속성, ImagePalette를 반환합니다. type

View 읽은 이미지 파일의 속성은 다음과 같습니다.

>>>print (im. format, im.size, im.mode)JPEG (900, 598) RGB
로그인 후 복사

Image는 GIF, FLI, FLC, TIFF 및 기타 형식 파일을 포함한 시퀀스 이미지 파일도 읽을 수 있습니다. open() 메서드는 이미지를 열 때 시퀀스의 첫 번째 프레임을 자동으로 로드하고,eek() 및 Tell() 메서드를 사용하여 여러 프레임 사이를 이동할 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 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 Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 및 Python : 코드 예제 및 비교 PHP 및 Python : 코드 예제 및 비교 Apr 15, 2025 am 12:07 AM

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.

Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스 Python vs. JavaScript : 커뮤니티, 라이브러리 및 리소스 Apr 15, 2025 am 12:16 AM

Python과 JavaScript는 커뮤니티, 라이브러리 및 리소스 측면에서 고유 한 장점과 단점이 있습니다. 1) Python 커뮤니티는 친절하고 초보자에게 적합하지만 프론트 엔드 개발 리소스는 JavaScript만큼 풍부하지 않습니다. 2) Python은 데이터 과학 및 기계 학습 라이브러리에서 강력하며 JavaScript는 프론트 엔드 개발 라이브러리 및 프레임 워크에서 더 좋습니다. 3) 둘 다 풍부한 학습 리소스를 가지고 있지만 Python은 공식 문서로 시작하는 데 적합하지만 JavaScript는 MDNWebDocs에서 더 좋습니다. 선택은 프로젝트 요구와 개인적인 이익을 기반으로해야합니다.

Docker 원리에 대한 자세한 설명 Docker 원리에 대한 자세한 설명 Apr 14, 2025 pm 11:57 PM

Docker는 Linux 커널 기능을 사용하여 효율적이고 고립 된 응용 프로그램 실행 환경을 제공합니다. 작동 원리는 다음과 같습니다. 1. 거울은 읽기 전용 템플릿으로 사용되며, 여기에는 응용 프로그램을 실행하는 데 필요한 모든 것을 포함합니다. 2. Union 파일 시스템 (Unionfs)은 여러 파일 시스템을 스택하고 차이점 만 저장하고 공간을 절약하고 속도를 높입니다. 3. 데몬은 거울과 컨테이너를 관리하고 클라이언트는 상호 작용을 위해 사용합니다. 4. 네임 스페이스 및 CGroup은 컨테이너 격리 및 자원 제한을 구현합니다. 5. 다중 네트워크 모드는 컨테이너 상호 연결을 지원합니다. 이러한 핵심 개념을 이해 함으로써만 Docker를 더 잘 활용할 수 있습니다.

터미널 VSCODE에서 프로그램을 실행하는 방법 터미널 VSCODE에서 프로그램을 실행하는 방법 Apr 15, 2025 pm 06:42 PM

vs 코드에서는 다음 단계를 통해 터미널에서 프로그램을 실행할 수 있습니다. 코드를 준비하고 통합 터미널을 열어 코드 디렉토리가 터미널 작업 디렉토리와 일치하는지 확인하십시오. 프로그래밍 언어 (예 : Python의 Python Your_file_name.py)에 따라 실행 명령을 선택하여 성공적으로 실행되는지 여부를 확인하고 오류를 해결하십시오. 디버거를 사용하여 디버깅 효율을 향상시킵니다.

파이썬 : 자동화, 스크립팅 및 작업 관리 파이썬 : 자동화, 스크립팅 및 작업 관리 Apr 16, 2025 am 12:14 AM

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

Windows 8에서 코드를 실행할 수 있습니다 Windows 8에서 코드를 실행할 수 있습니다 Apr 15, 2025 pm 07:24 PM

VS 코드는 Windows 8에서 실행될 수 있지만 경험은 크지 않을 수 있습니다. 먼저 시스템이 최신 패치로 업데이트되었는지 확인한 다음 시스템 아키텍처와 일치하는 VS 코드 설치 패키지를 다운로드하여 프롬프트대로 설치하십시오. 설치 후 일부 확장은 Windows 8과 호환되지 않을 수 있으며 대체 확장을 찾거나 가상 시스템에서 새로운 Windows 시스템을 사용해야합니다. 필요한 연장을 설치하여 제대로 작동하는지 확인하십시오. Windows 8에서는 VS 코드가 가능하지만 더 나은 개발 경험과 보안을 위해 새로운 Windows 시스템으로 업그레이드하는 것이 좋습니다.

VScode 란 무엇입니까? VScode 란 무엇입니까? Apr 15, 2025 pm 06:45 PM

VS Code는 Full Name Visual Studio Code로, Microsoft가 개발 한 무료 및 오픈 소스 크로스 플랫폼 코드 편집기 및 개발 환경입니다. 광범위한 프로그래밍 언어를 지원하고 구문 강조 표시, 코드 자동 완료, 코드 스 니펫 및 스마트 프롬프트를 제공하여 개발 효율성을 향상시킵니다. 풍부한 확장 생태계를 통해 사용자는 디버거, 코드 서식 도구 및 GIT 통합과 같은 특정 요구 및 언어에 확장을 추가 할 수 있습니다. VS 코드에는 코드에서 버그를 신속하게 찾아서 해결하는 데 도움이되는 직관적 인 디버거도 포함되어 있습니다.

Python에서 비주얼 스튜디오 코드를 사용할 수 있습니다 Python에서 비주얼 스튜디오 코드를 사용할 수 있습니다 Apr 15, 2025 pm 08:18 PM

VS 코드는 파이썬을 작성하는 데 사용될 수 있으며 파이썬 애플리케이션을 개발하기에 이상적인 도구가되는 많은 기능을 제공합니다. 사용자는 다음을 수행 할 수 있습니다. Python 확장 기능을 설치하여 코드 완료, 구문 강조 및 디버깅과 같은 기능을 얻습니다. 디버거를 사용하여 코드를 단계별로 추적하고 오류를 찾아 수정하십시오. 버전 제어를 위해 git을 통합합니다. 코드 서식 도구를 사용하여 코드 일관성을 유지하십시오. 라인 도구를 사용하여 잠재적 인 문제를 미리 발견하십시오.

See all articles