计算机视觉涉及使用计算机软件和硬件建模和人类视觉。
计算机视觉
计算机视觉是一门学科,根据场景中存在的结构特性,研究如何从 2D 图像重构,中断和理解 3D 场景。
计算机视觉层次结构
计算机视觉分为以下三个基本类别
计算机视觉与图像处理
图像处理将图像转换为图像。 图像处理的输入和输出都是图像。
计算机视觉是从其图像中构建对物理对象的明确而有意义的描述。 计算机视觉的输出是 3D 场景中结构的描述或解释。
应用 计算机视觉在以下领域中应用
机器人领域
医学领域
安全领域
运输
工业自动化应用
安装有用的包
对于使用 Python 的计算机视觉,您可以使用名为 OpenCV(开源计算机视觉)的流行库。 它。 它用 C++ 编写,其主要接口是 C++。 可以借助以下命令来安装此软件包
这里X代表示机器上安装的Python版本,以及所拥有的 win32 或 64 位版本。
如果您使用的是 anaconda 环境,请使用以下命令安装 OpenCV
大多数 CV 应用程序需要将图像作为输入并生成图像作为输出。 OpenCV 用于读取,显示,编写图像文件 OpenCV 为此提供了以下函数功能
示例
这个例子展示了用于以一种格式读取图像的 Python 代码 – 在一个窗口中显示它,并以其他格式写入相同的图像。 考虑下面显示的步骤
如下所示导入 OpenCV 包
现在,使用 imread()函数读取一个特定的图像
要显示图像,可使用 imshow() 函数。可以在其中看到图像的窗口的名称是 image_flower。
执行代码后,得到图片如下
可以使用 imwrite() 函数将相同的图像写入其他格式,比如
输出 True 表示图像已成功写入.png文件,并且也位于同一文件夹中。
注 – 函数 destroyallWindows()简单地销毁创建的所有窗口。
在 OpenCV 中,图像不是使用传统的 RGB 颜色存储的,而是以相反的顺序存储的,即以 BGR 顺序存储。 因此,读取图像时的默认颜色代码是 BGR。 cvtColor()颜色转换函数用于将图像从一个颜色代码转换为其他颜色代码。
示例
考虑这个例子,将图像从 BGR 转换为灰度。
如下所示导入 OpenCV 包
使用 imread()函数读取一个特定的图像
现在,如果使用imshow()函数来显示这个图像,那么可以看到这个图像在 BGR 中。
现在,使用cvtColor()函数将此图像转换为灰度。
人类在看到粗糙的草图后,可以轻松识别出许多物体类型及其姿态。 这就是为什么边缘在人类生活以及计算机视觉应用中扮演重要角色的原因。OpenCV 提供了非常简单而有用的函数 Canny() 来检测边缘。
示例
如下所示导入 OpenCV 包
使用 imread()函数读取一个指定的图像
现在,使用 Canny()函数来检测已读图像的边缘。
要显示具有边缘的图像,请使用 imshow()函数,参考以下代码
这个 Python 程序将创建一个名为 edges_penguins.jpg 的图像并进行边缘检测。
OpenCV 有一个内置的工具来执行人脸检测。 我们将使用 Haar 级联分类器进行人脸检测。
Haar 级联数据
可以在我们的 OpenCV 包中找到这些数据。 。 将有不同应用程序的 .xml 文件。 现在,将它们全部以供不同的使用,然后粘贴到当前项目下的新文件夹中。
示例
使用 Haar 级联检测下图中显示的 Amitabh Bachan 的面部的 Python 代码
如下所示导入 OpenCV 包
现在,使用 HaarCascadeClassifier 来检测脸部
使用 imread() 函数读取一个指定的图像,
将其转换为灰度,因为它会接受灰色图像
接下来,使用 face_detection.detectMultiScale,执行实际的人脸检测
围绕整个脸部绘制一个矩形
如图所示,这个 Python 程序将创建一个名为 Face_AB.jpg 的图像,它包含人脸检测
眼睛检测
OpenCV 有一个内置的工具来执行眼睛检测。 我们将使用 Haar 级联分类器进行眼睛检测。
示例 以下示例给出了使用 Haar 级联的 Python 代码来检测下图中给出的 Amitabh Bachan 的面部 –
如下所示导入 OpenCV 包
使用 HaarCascadeClassifier 检测脸部
使用 imread()函数读取指定图像
然后,将其转换为灰度,因为它会接受灰色图像
使用 eye_cascade.detectMultiScale ,执行实际的人脸检测
现在,围绕整个脸部绘制一个矩形
这个 Python 程序将创建一个名为 Eye_AB.jpg 的图像,如图所示,