本部分为实验楼课程学习内容。
# 基础知识
图像处理涉及到计算机视觉、图像等基础知识。
# 计算机视觉
计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。
目前计算机视觉领域已划分出:物体检测、运动跟踪、语义分割、视觉问答、姿势体态识别等多个研究领域。
计算机视觉的发展经历了从偏重计算和数学方法、90 年代传统的人工设计特征结合机器学习的分类器、到 2012 年以后以深度学习为主的视觉研发方法。
目前,由于深度学习在计算机视觉方面的优异表现,传统视觉算法:FAST、SIFT、SURF、Harris 等算法逐渐退出视觉领域。
# OpenCV和相关的工具安装
- OpenCV:是一个基于 C++ 编写的轻量级、高效的、开源的跨平台计算机视觉库,可运行在多种操作系统上:Windows、Mac OS、Linux、Android。由于其具有友好的可读性和较高的运行效率,故获得大量开发者的青睐,同时其还提供 Python、Ruby 等语言的接口方便开发者调用。
- NumPy:是一个支持处理多维度大型矩阵的 Python 科学计算包。在对图像进行处理时经常会用到 NumPy,OpenCV 中读取存储图片都是以 NumPy 形式完成的。利用 NumPy 我们可以轻松地以多维数据的形式呈现图片,并对图片进行重组、计算、数值分析等操作。
- Matplotlib:是一个 Python 2D 绘图库。其可以方便地生成直方图、条形图、散点图等。
# 安装相关包
sudo -H python3 -m pip install opencv-python==4.2.0.34 numpy==1.18.5 matplotlib==3.0.3
2
# 图像基础知识
像素:
每一张图片都是由一组像素构成的,像素是构成图片的最小单位。
像素的两种表现形态:灰度、彩色
灰度像素:在灰度图像中,每一个像素都具有一个在 0 到 255 之间的值,这些不同的值称为像素值,也可称为像素的强度。其中 0 表示黑色,而 255 表示白色,不同的灰度表示不同的明暗变化,越接近 0 的值在图像上表现的越暗,越接近 255 的值在图像上表现的越明亮。
彩色像素:通常用 RGB 颜色空间表示,RGB 颜色空间以 红(Red)、绿(Green)、蓝(Blue)三种基本颜色为基础,进行不同程度的叠加从而产生丰富的颜色,也通常称为三通道图片。这三种颜色每一个都用一个 0 到 255 的值表示,通常使用 8 位无符号整数来表示这些颜色的强度。所以一个彩色像素值表示为 (red, green, blue)。例如红色可以表示为 (255, 0, 0),白色表示为 (255, 255, 255)。
像素坐标:
像素坐标用于表示一个像素所处在图片中的位置,我们用 (y, x) 来表示一个像素在图片中的位置,其中 y 表示行,x 表示列。
# 图像基本操作
使用Python 和 OpenCV 对图片进行一些简单的操作。
# 从磁盘读取图片
cv2是opencv的C++命名空间名称,使用它来表示调用的是C++开发的opencv的接口。
cv2 是 OpenCV 数据库,其中包含了我们需要用到的函数。
导入了数据库后,我们要调用里面的读取图片的函数,使用cv2.imread
函数从磁盘中读取图片文件,括号中是我们需要读取图片的地址。
image = cv2.imread("images/cup.jpg")
注意:图片路径是否匹配。
# 保存图片
使用 cv2.imwrite 保存图片。
# 第一个参数 “new.jpg" 是我们要保存图片的地址,第二个参数 iamge 是我们要保存的图片。
# 执行这条语句会输出一个 True,说明成功保存了图片。
cv2.imwrite("new.jpg", image)
2
3