python中常用的图片处理的函数

文章目录

  • 前言
  • 一、CV2
    • 1、引入库
    • 2、常用函数
      • 2.1、读图片
      • 2.2、显示图片
      • 2.3、保存图片
      • 2.4、resize 图片
      • 2.5、平滑处理
      • 2.6、帧差
  • 二、 PIL
    • 1、引入库
    • 2、常用函数
      • 2.1、打开图片并显示:
      • 2.2、保存图片:
      • 2.3、图片的mode(模式),size(宽长),format(格式)
      • 2.4、转换图片模式
      • 2.5、 和 Numpy 数组之间的转化
      • 2.6、图片的resize,旋转和反转
  • 三、matplotlib
    • 1、 引入库
    • 2、常用函数
      • 2.1、plt.figure() 创建一个新的画布
      • 2.2 、plt.subplot() 创建子图
      • 2.3、plt.savefig('lena_new_sz.png') 保存图片


前言

python中常用的图片处理库


一、CV2


1、引入库

import cv2

没有库就执行

pip install opencv-python

2、常用函数

2.1、读图片

cv2.imread(path, flags)
#path是你所要读取图片的地址。
#flag是读取图片的类型:0是读灰度图,1是彩色图(不读取透明度),2也是彩色图(读取透明度)彩色图一般用二即可。
#如果用读取灰度图的方式读取彩色图,会读取到一个灰度图。
#(h,w,c)

#如果给定正确的图片路径,将返回一个[height, width, channel]的numpy.ndarray对象,height表示图片高度,width表示图片宽度,channel表示图片的通道。灰度图则是[height,width]。

在这里插入图片描述
如果path路径出现问题会报错提示 检查路径 并返回一个none

注:不知道为什么在读取.gif图片时,路径名设置正确,没有提示错误,但返回的是none。


2.2、显示图片

cv2.imshow('image',img) #前面是自定义显示的图片名,后面是要显示的图片
cv2.waitKey(0)  #不是用这个函数,图片会一闪而过。#等待按键。

这没什么需要说的。


2.3、保存图片

cv2.imwrite(path, img)
#path保存的哪里路径名。
#img是要保存的图片

这也没什么需要说的


2.4、resize 图片

img2 = cv.resize(img, (w,h),interpolation)
#img原图片
#img2缩放后的图片
#a,b缩放后的宽,高
img2 = cv.resize(img, (w,h)

interpolation是你缩放图像所需要用的插值方式(默认就好)。是缩放图像不是裁剪。

INTER_NEAREST 最近邻插值
INTER_LINEAR 双线性插值(默认设置)
INTER_CUBIC 4x4像素邻域的双三次插值
INTER_AREA 使用像素区域关系进行重采样。
INTER_LANCZOS4 8x8像素邻域的Lanczos插值

注:这里刚好和上面的imread相反,读入是(h,w,c)。这里是
(w,h)


2.5、平滑处理

均值滤波:

img_smooth = cv2.blur(img_src,ksize=(3,3))

ksize是对多大范围内的像素取均值。


2.6、帧差

将两幅灰度图做差,用来区分前景和背景

cv2.absdiff(gray_cur, gray_base)

python中常用的图片处理的函数_第1张图片
最后一张就是帧差后的图像。


二、 PIL

1、引入库

from PIL import Image

没有库就下载

pip install pillow

2、常用函数

2.1、打开图片并显示:

image = Image.open('path/2092.jpg')
image.show()

2.2、保存图片:

image.save('path/1.jpg')

2.3、图片的mode(模式),size(宽长),format(格式)

print(image.mode, image.size, image.format)

mode 属性为图片的模式,RGB 代表彩色图像,L 代表光照图像也即灰度图像等
size 属性为图片的大小(宽度,长度)
format 属性为图片的格式,如常见的 PNG、JPEG 等


2.4、转换图片模式

image.show()
grey_image = image.convert('L') #转灰度图
grey_image.show()

任何支持的图片模式都可以直接转为彩色模式或者灰度模式,但是,若是想转化为其他模式,则需要借助一个中间模式(通常是彩色)来进行过转。
目前只知道彩色转灰度图,之后有时间测试一下其他的转换,之后更新。


2.5、 和 Numpy 数组之间的转化

array = np.array(image)
print(array.shape) #(321, 481, 3)
out = Image.fromarray(array)

2.6、图片的resize,旋转和反转

im = image.resize((300, 300))
im = image.rotate(45)  # 逆时针旋转 45 度
im = image.transpose(Image.FLIP_LEFT_RIGHT) # 左右翻转
im = im.transpose(Image.FLIP_TOP_BOTTOM)# 上下翻转

三、matplotlib

我们在读入图片后一般会进行一些计算和处理,通常会转成numpy类型。处理好的图片我们显示出来看时就不能用cv2或PIL了,但matplotlib可以显示numpy类型的图片。

1、 引入库

import matplotlib.pyplot as plt 

2、常用函数

2.1、plt.figure() 创建一个新的画布

num 区分 fingure的标识

plt.figure(1)
plt.figure(num = 2)

2.2 、plt.subplot() 创建子图

在figure中创建子图,将区域划分为一行两列的区域,第一张图在第一个区域,第二张图在第二个区域。若是plt.subplot(2,2,3),代表划分为两行两列,显示在第三个区域(第二行第一列)。

plt.figure()
plt.subplot(1,2,1)
plt.imshow(images[i])
plt.subplot(1,2,2)
plt.imshow(maskes[i])
plt.show()

python中常用的图片处理的函数_第2张图片


2.3、plt.savefig(‘lena_new_sz.png’) 保存图片

该方法适用于保存任何 matplotlib 画出的图像

plt.savefig('lena_new_sz.png')

你可能感兴趣的:(python基础知识,python,opencv,计算机视觉)