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

简介: 图像处理本地基本类库使用

课程连接

项目链接

参考项目(坑姐的图像处理入门基础)


20210304002259878.jpg


图: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)


20210304001207158.png


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通道:


20210304003516185.png


通道合并

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方向平移的距离:


20210304005615120.png


平移是用仿射变换函数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)


20210304010309244.png


画矩形:

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


20210304010447330.png


颜色空间转换



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


  • 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。


特殊报错



20210303222636895.png


如上图:是图片导入异常导致的请查看图片的路径


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()


20210304004536447.png

显示某个通道

img_1 = img[:, :, 0]


这个是热度图


20210304004705838.png


plt.imshow(img_1, cmap='Greys_r')  # 转换成灰度图
### 或者
img = plt.imshow(img_1)
img.set_cmap('gray')  # 'hot' 是热量图
plt.show()

20210304004934667.png


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

目录
相关文章
|
3月前
|
算法 计算机视觉
基于qt的opencv实时图像处理框架FastCvLearn实战
本文介绍了一个基于Qt的OpenCV实时图像处理框架FastCvLearn,通过手撕代码的方式详细讲解了如何实现实时人脸马赛克等功能,并提供了结果展示和基础知识回顾。
137 7
基于qt的opencv实时图像处理框架FastCvLearn实战
|
4月前
|
计算机视觉 Python
图像处理工具设计
该文章提供了一个Python图像处理工具的设计,包括提高图像对比度、提取边缘、视频帧拆分、图像滚动测试和像素连接等功能的实现代码。
WK
|
4月前
|
计算机视觉 Python
如何使用OpenCV进行基本图像处理
使用OpenCV进行基本图像处理包括安装OpenCV,读取与显示图像,转换图像颜色空间(如从BGR到RGB),调整图像大小,裁剪特定区域,旋转图像,以及应用图像滤镜如高斯模糊等效果。这些基础操作是进行更复杂图像处理任务的前提。OpenCV还支持特征检测、图像分割及对象识别等高级功能。
WK
54 4
|
6月前
|
机器学习/深度学习 人工智能 算法
Java图像处理与计算机视觉应用
Java图像处理与计算机视觉应用
|
6月前
|
计算机视觉 索引 Python
openCV 3计算机视觉 Python语言实现 笔记__第二章 处理文件、摄像头和图形用户界面
openCV 3计算机视觉 Python语言实现 笔记__第二章 处理文件、摄像头和图形用户界面
|
7月前
|
传感器 算法 计算机视觉
LabVIEW 图像处理功能
LabVIEW 图像处理功能
87 0
|
7月前
|
编解码 算法 自动驾驶
|
PHP 数据安全/隐私保护 计算机视觉
PHPImagine 图像处理库介绍
随着网络的发展,人们对图像的需求越来越高。作为一个PHP开发者,我们在处理图像时经常会遇到一些问题,比如裁剪、缩放、加水印等。这些问题都可以通过使用图像处理库来解决。PHPImagine就是一种优秀的图像处理库。
81 0
|
Java 数据安全/隐私保护 计算机视觉
thumbnails图像处理库的使用
thumbnails是Java一个优秀的图像处理库,可以对图片进行压缩、加水印、裁剪、更改格式等功能。下面为大家介绍使用这个图像处理库。
thumbnails图像处理库的使用
|
算法 开发工具 Android开发
基于qml创建最简单的图像处理程序(3)-使用opencv&qml进行图像处理
《基于qml创建最简单的图像处理程序》系列课程及配套代码基于qml创建最简单的图像处理程序(1)-基于qml创建界面http://www.cnblogs.com/jsxyhelu/p/8343310.html课程1附件https://files.
1608 0