Python 이미지 처리 라이브러리 PIL을 사용하는 방법
1. 소개
1. 기본 소개
Pillow는 Python에서 비교적 기본적인 이미지 처리 라이브러리로 이미지 자르기, 이미지 크기 조정, 이미지 색상 처리 등의 작업에 주로 사용됩니다. Pillow에 비해 OpenCV와 Scikit-image는 더 풍부한 기능을 갖고 있어 사용하기가 더 복잡합니다. 이들은 잘 알려진 "얼굴 인식" 애플리케이션과 같은 머신 비전 및 이미지 분석과 같은 분야에서 주로 사용됩니다.
2. 기능
-
다양한 형식 지원
Pillow는 "jpeg", "png", "bmp", "gif", "ppm", "tiff"와 같은 다양한 이미지 형식을 지원합니다. ", 등. 동시에 이미지 형식 간의 상호 변환도 지원합니다. 요컨대 Pillow는 거의 모든 형식의 이미지를 처리할 수 있습니다.
-
풍부한 기능 제공
Pillow는 풍부한 이미지 처리 기능을 제공하며 이는 두 가지 측면으로 요약될 수 있습니다.
썸네일 생성, 미리보기 이미지 생성, 이미지 일괄 처리 등, 이미지 처리에는 이미지 크기 조정, 이미지 자르기, 픽셀 처리, 필터 추가, 이미지 색상 처리 등이 포함됩니다.
이미지 보관
이미지 처리
사용법
3. 설치
pip install pillow 导包 imoprt PIL
2. 이미지 객체
1. 객체 인스턴스화
1.1 인스턴스화
guide 패키지
from PIL import Image
open 메소드 사용
im = PIL.Image.open(fp) # 导入图片 im.show() # 展示图片
fp: 이미지 경로 오픈을 이용하세요 method
im = Image.new(mode,size,color) # 创建图片 im.show() # 展示图片로그인 후 복사
매개변수는 다음과 같이 설명됩니다.
mode: 이미지 모드, RGB(트루 컬러 이미지), L(회색조 이미지), CMYK(컬러 맵 인쇄 모드) 등과 같은 문자열 매개변수
- size: 이미지 크기, 튜플 매개변수(너비, 높이)는 이미지의 픽셀 크기를 나타냅니다.
- color: 이미지 색상, 기본값은 0이며 이는 검정색을 의미하며 매개변수 값은 (R, G, B를 지원합니다) ) 삼중항 숫자 형식, 색상의 16진수 값과 색상의 영어 단어
- 1.2 Image mode
1 | |||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
L | |||||||||||||||||||||||||||||||||||||
P | |||||||||||||||||||||||||||||||||||||
RGB | |||||||||||||||||||||||||||||||||||||
RGBA | |||||||||||||||||||||||||||||||||||||
CMYK | |||||||||||||||||||||||||||||||||||||
YCbCr | |||||||||||||||||||||||||||||||||||||
LAB | |||||||||||||||||||||||||||||||||||||
HSV | |||||||||||||||||||||||||||||||||||||
I | |||||||||||||||||||||||||||||||||||||
F | |||||||||||||||||||||||||||||||||||||
Name | Description |
---|---|
ImageFilter.BLUR | 블러 필터링, 즉 필터를 의미합니다 |
ImageFilter.CON TOUR | 컨투어 필터링, 이미지 윤곽선 정보 찾기 |
ImageFilter.DETAIL | 디테일 필터링, 이미지 표시를 더욱 세밀하게 만들기 |
ImageFilter.FIND_EDGES | 경계 필터링 찾기(이미지의 경계 정보 찾기) |
ImageFilter.EMBOSS | 엠보싱 필터, 이미지를 부조 이미지 형식으로 표시 |
ImageFilter.EDGE_ENHANCE | 테두리 향상 필터 |
ImageFilter.EDGE_ENHANCE_MORE | 깊이 가장자리 향상 필터 |
ImageFilter.SMOOTH | 부드러운 필터 |
ImageFilter .SMOOTH_MORE | 심층 스무딩 필터 |
ImageFilter.SHARPEN | 선명 필터 |
ImageFilter.GaussianBlur() | 가우시안 블러 |
ImageFilter.Un SharpMask() | Unsharp Mask Filter |
ImageFilter.Kernel() | Convolution 커널 필터링 |
ImageFilter.MinFilter(size) | Minimum 필터, size 매개변수로 지정된 영역에서 최소 픽셀 값을 선택하여 저장합니다. 출력 이미지 중간으로 이동합니다. |
ImageFilter.MedianFilter(size) | Median 필터는 크기 매개변수로 지정된 영역에서 중앙값 픽셀 값을 선택하여 출력 이미지에 저장합니다. |
ImageFilter.MaxFilter(크기) | 최대 필터 |
ImageFilter.ModeFilter() | 모드 필터링 |
2.2 使用语法
语法:
im_ft = im.filter(filt_mode) # 返回图像对象,里面传入滤波器
实例:
from PIL import Image, ImageFilter im = Image.open(r"D:\35005\Pictures\Screenshots\微信图片_20220302175157.jpg") im_ft = im.filter(ImageFilter.EMBOSS) # 添加浮雕滤波器 im_ft.show()
相当于PS里面添加的滤镜
四、 ImageColor
1、 简介
Pillow 提供了颜色处理模块 ImageColor,该模块支持不同格式的颜色,比如 RGB 格式的颜色三元组、十六进制的颜色名称(#ff0000)以及颜色英文单词("red")。同时,它还可以将 CSS(层叠样式表,用来修饰网页)风格的颜色转换为 RGB 格式
在 ImageColor 模块对颜色的大小写并不敏感,比如 "Red" 也可以写为 " red"
2、 颜色处理
2.1 颜色命名
ImageColor 支持多种颜色模式的的命名(即使用固定的格式对颜值进行表示),比如我们熟知的 RGB 色彩模式,除此之外,还有 HSL (色调-饱和度-明度)、HSB (又称 HSV,色调-饱和度-亮度)色彩模式。下面对 HSL 做简单介绍:
H:即 Hue 色调,取值范围 0 -360,其中 0 表示“red”,120 表示 “green”,240 表示“blue”
S:即 Saturation 饱和度,代表色彩的纯度,取值 0~100%,其中 0 代表灰色(gry),100% 表示色光最饱和
L:即 Lightness 明度,取值为 0~100%,其中 0 表示“black”黑色,50% 表示正常颜色,100% 则表示白色
亮度和明度的表达方式类似,链接中有具体描述:【https://www.zhihu.com/question/22077462】
ImageColor 模块比较简单,只提供了两个常用方法,分别是 getrgb() 和 getcolor() 函数
2.2 getrgb
语法:
rgb = PIL.ImageColor.getrgb(color) # 得到颜色的 rgb 数值
color参数即可以是英文,也可以是HSL和HSB模式2.3
应用:
from PIL import Image, ImageColor im = Image.new(mode="RGB", size=(100, 100), color=ImageColor.getrgb('HSL(0,100%,50%)')) im.show()
2.3 getcolor
语法:
val = PIL.ImageColor.getcolor(color, mode)
参数:
color:一个颜色名称,字符串格式,可以是颜色的英文单词,或者十六进制颜色名。如果是不支持的颜色,会报 ValueError 错误
mode:指定色彩模式,如果是不支持的模式,会报 KeyError 错误
五、 ImageFont
1、 简介
ImageFont模块定义了相同名称的类,即ImageFont类。这个类的实例存储bitmap字体,用于ImageDraw类的text()方法
PIL使用自己的字体文件格式存储bitmap字体。用户可以使用pilfont工具包将BDF和PCF字体描述器(Xwindow字体格式)转换为这种格式
2、 模块函数
2.1 load
语法:
ft = PIL.ImageFont.load(font_file)
从指定的文件中加载一种字体 ,返回字体对象
2.2 load_path
语法:
ft = PIL.ImageFont.load_path(font_file)
和函数load()一样,但是如果没有指定当前路径的话,会从sys.path开始查找指定的字体文件
2.3 truetype
语法:
ft = PIL.ImageFont.truetype(file, size[, encoding=None])
参数:
file: 加载一个TrueType或者OpenType字体文件
size: 为指定大小的字体创建了字体对象
encoding:字体编码,主要字体编码有: “unic”(Unicode),“symb”(Microsoft Symbol),“ADOB”(Adobe Standard),“ADBE”(Adobe Expert)和“armn”(Apple Roman)
2.4 load_default
语法:
ft = PIL.ImageFont.load_default()
加载一个默认字体,返回一个字体对象
3、 模块方法
3.1 getsize
语法:
size = ft.getsize(text)
返回给定文本的宽度和高度,返回值为2元组
3.2 getmask
语法:
obj = ft.getmask(text,mode=None) # 为给定的文本返回一个位图。这个位图是PIL内部存储内存的实例
参数:
text :要渲染的文本。
mode:某些图形驱动程序使用它来指示驱动程序喜欢哪种模式;如果为空,渲染器可能返回任一模式。请注意,模式始终是字符串
六、 ImageDraw
1、 简介
1.1 导入
ImageDraw 模块也是 Pillow 库的主要模块之一,它能给图像化圆弧,画横线,写上文字等
导入:
from PIL import ImageDraw
实例化对象:
from PIL import Image, ImageDraw im = Image.open("./a.jpg") # 创建 image 对象 draw = ImageDraw.Draw(im) # 实例化可以在指定图像上画图的 Draw 对象
1.2 基本概念
Coordinates
绘图接口使用和PIL一样的坐标系统,即(0,0)为左上角。
Colours
为了指定颜色,用户可以使用数字或者元组,对应用户使用函数Image.new或者Image.putpixel。对于模式为“1”,“L”和“I”的图像,使用整数。对于“RGB”图像,使用整数组成的3元组。对于“F”图像,使用整数或者浮点数。
对于调色板图像(模式为“P”),使用整数作为颜色索引。在1.1.4及其以后,用户也可以使用RGB 3元组或者颜色名称。绘制层将自动分配颜色索引,只要用户不绘制多于256种颜色。
Colours Names
A、 十六进制颜色说明符,定义为“#rgb”或者“#rrggbb”。例如,“#ff0000”表示纯红色。
B、 RGB函数,定义为“rgb(red, green, blue)”,变量red、green、blue的取值为[0,255]之间的整数。另外,颜色值也可以为[0%,100%]之间的三个百分比。例如,“rgb(255, 0, 0)”和“rgb(100%, 0%, 0%)”都表示纯红色。
C、 HSL(Hue-Saturation-Lightness)函数,定义为“hsl(hue,saturation%, lightness%)”,变量hue为[0,360]一个角度表示颜色(red=0, green=120, blue=240),变量saturation为[0%,100%]之间的一个值(gray=0%,full color=100%),变量lightness为[0%,100%]之间的一个值(black=0%, normal=50%, white=100%)。例如,“hsl(0,100%, 50%)”为纯红色。
D、 通用HTML颜色名称,ImageDraw模块提供了140个标准颜色名称,Xwindow系统和大多数web浏览器都支持这些颜色。颜色名称对大小写不敏感。例如,“red”和“Red”都表示纯红色。
在PIL 1.1.4及其以后的版本,用户绘制“RGB”图像时,可以使用字符串常量。PIL支持如下字符串格式:
Fonts
PIL可以使用bitmap字体或者OpenType/TrueType字体
2、 模块函数
2.1 arc
语法:
draw.arc(xy, start, end, options)
在给定的区域内,在开始和结束角度之间绘制一条弧
options:可以有什么内容可以在源代码中查看
2.2 bitmap
语法:
draw.bitmap(xy, bitmap, options) # options中可以添加 fill 覆盖的颜色
在给定的区域里绘制变量bitmap所对应的位图,非零部分使用变量options中fill的值来填充。变量bitmap位图应该是一个有效的透明模板(模式为“1”)或者蒙版(模式为“L”或者“RGBA”)
变量xy是变量bitmap对应位图起始的坐标值,而不是一个区域
这个方法与Image.paste(xy, color, bitmap)有相同的功能
2.3 chord
语法:
draw.chord(xy, start, end, options)
和方法arc()一样,但是使用直线连接起始点
变量 options 的 outline 给定弦轮廓的颜色;fill 给定弦内部的颜色
2,4 ellipse
语法:
draw.ellipse(xy, options)
在给定的区域绘制一个椭圆形
变量 options 的 outline 给定弦轮廓的颜色;fill 给定弦内部的颜色
2.5 line
语法:
draw.line(xy, options)
在变量xy列表所表示的坐标之间画线
xy里面至少有两个坐标,坐标使用元组表示,存储在一个列表里面[(x1, y1), (x2, y2)]
width指定宽度,fill 指定线的颜色
2.6 pieslice
语法:
draw.pieslice(xy, start, end, options)
和方法arc()一样,但是在指定区域内结束点和中心点之间绘制直线
2.7 point
语法:
draw.point(xy, options)
在指定位置画一个只占一个像素的小点
2.8 polygon
语法:
draw.polygon(xy, options)
绘制一个多边形
多边形轮廓由给定坐标之间的直线组成,在最后一个坐标和第一个坐标间增加了一条直线,形成多边形
坐标列表是包含2元组[(x,y),…]或者数字[x,y,…]的任何序列对象,它最少包括3个坐标值
变量options的fill给定多边形内部的颜色
2.9 rectangle
语法:
draw.rectangle(xy, options)
绘制一个长边形
变量xy是包含2元组[(x,y),…]或者数字[x,y,…]的任何序列对象,它应该包括2个坐标值
注意:当长方形没有没有被填充时,第二个坐标对定义了一个长方形外面的点
变量options的fill给定长边形内部的颜色
2.10 text
语法:
draw.text(xy, string, options)
在给定的位置绘制一个字符串。变量xy给出了文本的左上角的位置
变量option的 font 用于指定所用字体。它应该是类ImangFont的一个实例,使用ImageFont模块的load()方法从文件中加载的
变量options的fill给定文本的颜色
2.11 textsize
语法:
draw.textsize(string, options)
返回给定字符串的大小,以像素为单位
变量option的 font 用于指定所用字体。它应该是类ImangFont的一个实例,使用ImageFont模块的load()方法从文件中加载的
七、 Image与Numpy
from PIL import Image import numpy as np im = Image.open("./a.jpg") print(np.asarray(im)) # 三维数组 na = np.asarray(im) # 将图片转换为数组 na[0][0][0] = 0 # 修改数组的值 im_new = Image.fromarray(na) # 将数组转换为图片
위 내용은 Python 이미지 처리 라이브러리 PIL을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

Python은 부드러운 학습 곡선과 간결한 구문으로 초보자에게 더 적합합니다. JavaScript는 가파른 학습 곡선과 유연한 구문으로 프론트 엔드 개발에 적합합니다. 1. Python Syntax는 직관적이며 데이터 과학 및 백엔드 개발에 적합합니다. 2. JavaScript는 유연하며 프론트 엔드 및 서버 측 프로그래밍에서 널리 사용됩니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

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

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

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

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

VS 코드 확장은 악의적 인 코드 숨기기, 취약성 악용 및 합법적 인 확장으로 자위하는 등 악성 위험을 초래합니다. 악의적 인 확장을 식별하는 방법에는 게시자 확인, 주석 읽기, 코드 확인 및주의해서 설치가 포함됩니다. 보안 조치에는 보안 인식, 좋은 습관, 정기적 인 업데이트 및 바이러스 백신 소프트웨어도 포함됩니다.
