一、Image 模块
1.1 Image.open()
可以根据给定的路径返回Image图像
Image.open(im_path) ⇒ image
from PIL import Image
im_path = './ali.png'
im = Image.open(im_path)
print(type(im))
1.2 im.show()
可以直接将读取的图像可视化出来
from PIL import Image
im_path = './ali.png'
im = Image.open(im_path)
im.show()
1.3 im.save()
from PIL import Image
im_path = './ali.png'
im = Image.open(im_path)
im.save('./ali_save.png')
1.4 im.format
如果图像是png格式则输出"PNG",如果是jpg格式则输出"JPEG"
from PIL import Image
im_path = './ali.png'
im = Image.open(im_path)
print(im.format)
1.5 im.mode
modes | 描述 |
---|---|
1 | 1位像素,黑和白,存成8位的像素 |
L | 8位像素,黑白 |
P | 8位像素,使用调色板映射到任何其他模式 |
RGB | 3× 8位像素,真彩 |
RGBA | 4×8位像素,真彩+透明通道 |
I | 32位整型像素 |
F | 32位浮点型像素 |
from PIL import Image
im_path = './ali.png'
im = Image.open(im_path)
print(im.mode)
1.6 im.convert()
将当前图像转换为其他模式,并且返回新的图像。其中的参数是字符串格式并且必须是大写
im.convert(mode)⇒ image
from PIL import Image
im_path = './ali.png'
im = Image.open(im_path)
im_L = im.convert('L')
im_L.save('./ali_L.png')
1.7 im.size
返回值为宽度和高度的二元组(width, height)
from PIL import Image
im_path = './ali.png'
im = Image.open(im_path)
print(im.size)
1.8 im.crop
从当前的图像中返回一个矩形区域的拷贝。变量box是一个四元组,定义了左、上、右和下的像素坐标。用来表示在原始图像中截取的位置坐标
im.crop(box) ⇒ image
from PIL import Image
im_path = './ali.png'
im = Image.open(im_path)
box = (20, 50, 880, 800) # 人为指定
im_region = im.crop(box)
im_region.save('./ali_region.png')
1.9 im.filter()
返回一个使用给定滤波器处理过的图像的拷贝。具体参考图像滤波在ImageFilter 模块的应用,在该模块中,预先定义了很多增强滤波器,可以通过filter( )函数使用,预定义滤波器包括:BLUR、CONTOUR、DETAIL、EDGE_ENHANCE、EDGE_ENHANCE_MORE、EMBOSS、FIND_EDGES、SMOOTH、SMOOTH_MORE、SHARPEN。其中BLUR就是均值滤波,CONTOUR找轮廓,FIND_EDGES边缘检测,使用该模块时,需先导入。
im.filter(filter) ⇒ image
from PIL import Image
from PIL import ImageFilter
im_path = './ali.png'
im = Image.open(im_path)
bluF = im.filter(ImageFilter.BLUR)
bluF.save('./ali_BLUR.png')
conF = im.filter(ImageFilter.CONTOUR)
conF.save('./ali_CONTOUR.png')
edgeF = im.filter(ImageFilter.FIND_EDGES)
edgeF.save('./ali_FIND_EDGES.png')
1.10 im.resize()
返回改变尺寸的图像的拷贝。变量size是所要求的尺寸,是一个二元组:(width, height)。生成的图像会产生形变
im.resize(size) ⇒ image
from PIL import Image
im_path = './ali.png'
im = Image.open(im_path)
im_resize = im.resize((800,800))
im_resize.save('./ali_resize.png')
im.Rotate
返回一个按照给定角度逆时钟围绕图像中心旋转后的图像拷贝。
im.rotate(angle) ⇒ image
from PIL import Image
im_path = './ali.png'
im = Image.open(im_path)
im_45 = im.rotate(45)
im_45.save('./ali_45.png')
二、opencv
2.1 cv2.imread()
可以根据图像的路径获取图像的矩阵值,返回值是一个numpy,size是(h,w,c)
cv2.imread(im_path) ⇒ image
import cv2
im_path = './ali.png'
im = cv2.imread('./ali.png')
print(type(im))
print(im.shape)
cv2.imread()还有第二个参数,表示读取的模式。
1:读入的为彩色图像(默认)
0:读入的为黑白图像(即使读入的为彩色图像也将转化为灰度图像)
import cv2
im_path = './ali.png'
im = cv2.imread('./ali.png', 0)
print(im.shape)
cv2.imwrite()
将numpy转成图像保存到指定路径
import cv2
im_path = './ali.png'
im = cv2.imread('./ali.png')
cv2.imwrite('./ali_save_cv.png', im)