图像处理本地基本类库使用

图片处理基本库的本地使用

      • PIL库
      • OpenCV库(cv2)
      • 颜色空间转换
      • 特殊报错
      • matplotlib库

课程连接
项目链接
参考项目(坑姐的图像处理入门基础)

图像处理本地基本类库使用_第1张图片
图:1.jpg

PIL库

安装库

pip install pil

导入库

from PIL import Image

读取文件

img = Image.open('1.jpg')  # 使用pil库读取图片

显示图片

img.show()  # 显示图片

保存图片

img.save("1.1.jpg")  # 保存

转换为数组

np.array(img)

print(np.array(img).shape) # 太长了就不展示了直接看数组的维度吧
(121, 121, 3)

PIL分离颜色通道

img.getchannel(0)  # 括号里面0,1,2就是对应的通道
r, g, b = img.split()  #  r, g, b就是对应的通道

图片裁剪

r.crop((50, 50, 128, 128))   # 对应着4个点的像素坐标 

三通道的彩色图(RGB),还有四通道的(RGBA)
图像处理本地基本类库使用_第2张图片

OpenCV库(cv2)

读取图片

img = cv2.imread('1.jpg', 3)  # 0,1,2代表对应的通道,3代表3通道

print(img.shape)
(121, 121, 3)

显示图片

cv2.imshow('image', img)  # 显示图片
cv2.waitKey(1500)  # 显示图片时长(单位毫秒)0则是一直显示

把维度进行 转换

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # 将彩色图的BGR通道顺序转成RGB

OpenCV读取的BGR通道顺序其他的库是RGB通道顺序,需要进行修改(比如用plt显示)

通道分割

b, g, r = cv2.split(img)

g通道:
图像处理本地基本类库使用_第3张图片

通道合并

img = cv2.merge((b, g, r))

大小缩放

img = cv2.resize(img, (400, 500))

翻转及旋转

参数2 = 0:垂直翻转(沿x轴),参数2 > 0: 水平翻转(沿y轴),参数2 < 0: 水平垂直翻转。

img = cv2.flip(img, 2, 2)

平移图片
要平移图片,我们需要定义下面这样一个矩阵,tx,ty是向x和y方向平移的距离:
在这里插入图片描述
平移是用仿射变换函数cv2.warpAffine()实现的:

rows, cols = img.shape[:2]  # 获得图片的高、宽
M = np.float32([[1, 0, 20], [0, 1, 40]])  # x轴平移20,y轴平移40
img = cv2.warpAffine(img, M, (cols, rows))  

划线:

# 画一条线宽为5的蓝色直线,参数2:起点,参数3:终点
cv2.line(img, (0, 0), (60, 120), (255, 255, 0), 5)  

图像处理本地基本类库使用_第4张图片
画矩形:

img = cv2.rectangle(img, (40, 40), (80, 80), (0, 255, 0),2)

图像处理本地基本类库使用_第5张图片

颜色空间转换

最常用的颜色空间转换如下:

  • RGB或BGR到灰度(COLOR_RGB2GRAY,COLOR_BGR2GRAY)
  • RGB或BGR到YcrCb(或YCC)(COLOR_RGB2YCrCb,COLOR_BGR2YCrCb)
  • RGB或BGR到HSV(COLOR_RGB2HSV,COLOR_BGR2HSV)
  • RGB或BGR到Luv(COLOR_RGB2Luv,COLOR_BGR2Luv)
  • 灰度到RGB或BGR(COLOR_GRAY2RGB,COLOR_GRAY2BGR)

经验之谈:颜色转换其实是数学运算,如灰度化最常用的是:gray=R0.299+G0.587+B*0.114。

特殊报错

在这里插入图片描述
如上图:是图片导入异常导致的请查看图片的路径

matplotlib库

导入

import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片

读取文件

img = mpimg.imread('1.jpg')

显示文件

plt.imshow(img)
# plt.axis('off')  # 不显示坐标轴
plt.show()

图像处理本地基本类库使用_第6张图片

显示某个通道

img_1 = img[:, :, 0]

这个是热度图
图像处理本地基本类库使用_第7张图片

plt.imshow(img_1, cmap='Greys_r')  # 转换成灰度图

### 或者
img = plt.imshow(img_1)
img.set_cmap('gray')  # 'hot' 是热量图
plt.show()

图像处理本地基本类库使用_第8张图片

对图像处理的几个类库进行了简单的解析。

你可能感兴趣的:(#,领航团图像分类课程,python,paddlepaddle)