AI人工智能 计算机视觉
AI人工智能 概述
计算机视觉涉及使用计算机软件和硬件建模和复制人类视觉。
计算机视觉
| 计算机视觉是一门学科,根据场景中存在的结构特性,研究如何从 2D 图像重构,中断和理解 3D 场景。 | |
|---|---|
计算机视觉层次结构
计算机视觉分为以下三个基本类别
    低级视觉 - 它包括用于特征提取的过程图像。
    中级视觉 - 它包括物体识别和 3D 场景解释
    高级视觉 - 它包括对活动,意图和行为等场景的概念性描述。
    
    
    clike
        计算机视觉与图像处理
图像处理将图像转换为图像。 图像处理的输入和输出都是图像。
| 计算机视觉是从其图像中构建对物理对象的明确而有意义的描述。 计算机视觉的输出是 3D 场景中结构的描述或解释。 | |
|---|---|
应用 计算机视觉在以下领域中应用
机器人领域
    本地化 - 自动确定机器人位置
    导航
    避免障碍
    装配(插入孔,焊接,喷漆)
    操作(例如 PUMA 机器人操作器)
    人机器人交互(HRI):智能机器人与人交互和服务
    
    
    clike
        医学领域
    分类和检测(例如病变或细胞分类和肿瘤检测)
    2D/3D 分割
    3D 人体器官重建(MRI或超声波)
    视觉引导的机器人手术
    
    
    clike
        安全领域
    生物识别技术(虹膜,指纹,脸部识别)
    监视 - 检测某些可疑的活动或行为
    
    
    clike
        运输
    自主车辆
    安全,例如驾驶员警惕性监控
    
    
    clike
        工业自动化应用
    工业检查(缺陷检测)
    部件
    条码和包装标签阅读
    对象排序
    文件理解(例如 OCR)
    
    
    clike
        安装有用的包
当您希望进行Python编程的计算机视觉任务时,请考虑使用OpenCV(open-source computer vision library),这是一个主要用于实时计算机视觉的核心工具。 该库采用C++语言编写,并基于C++语言设计其接口。 您可以通过以下命令轻松获取此软件包
    pip install opencv_python-X.X-cp36-cp36m-winX.whl
    
    
    python
        这里X代表示机器上安装的Python版本,以及所拥有的 win32 或 64 位版本。
如果您使用的是 anaconda 环境,请使用以下命令安装 OpenCV
    conda install -c conda-forge opencv
    
    
    python
        AI人工智能 读取,写入和显示图像
许多 CV 应用程序接受并输出图像数据。 OpenCV 提供了读取、显示和编写图像文件的功能
    imread()函数 - 这是读取图像的函数。 OpenCV imread()支持各种图像格式,如 PNG,JPEG,JPG,TIFF等。
    imshow()函数 - 这是用于在窗口中显示图像的函数。 该窗口自动适合图像大小。 OpenCV imshow()支持各种图像格式,如 PNG,JPEG,JPG,TIFF 等。
    imwrite()函数 - 这是写入图像的函数。 OpenCV imwrite()支持各种图像格式,如 PNG,JPEG,JPG,TIFF等。
    
    
    python
        示例
这个示例演示了如何使用Python代码以特定格式读取并转换图像 - 将该图像在窗口中呈现出来,并输出到其他格式以便进一步处理。 需要关注以下步骤
如下所示导入 OpenCV 包
    import cv2
    
    
    python
        现在,使用 imread()函数读取一个特定的图像
    image = cv2.imread('image_flower.jpg')
    
    
    python
        可以通过 imshow() 函数来显示图像。可以看到该窗口的名称为 image_flower。
    cv2.imshow('image_flower',image)
    cv2.destroyAllwindows()
    
    
    python
        执行代码后,得到图片如下

可以使用 imwrite() 函数将相同的图像写入其他格式,比如 .png,
    cv2.imwrite('image_flower.png',image)
    
    
    python
        输出 True 表示图像已成功写入.png文件,并且也位于同一文件夹中。
注 - 函数 destroyallWindows()简单地销毁创建的所有窗口。
AI人工智能 色彩空间转换
在 OpenCV 中,图像不以传统的 RGB 顺序进行存储。
相反地,在 OpenCV 中是以 BGR 顺序来进行存储的。
按照 BGR 的顺序进行数据存储。
因此,在默认情况下,默认的颜色代码采用的是 BGR 方案。
cvtColor() 函数的作用是将图像的颜色数据从一种编码转换为另一种编码表示。
示例
| 考虑这个例子,将图像从 BGR 转换为灰度。 | |
|---|---|
如下所示导入 OpenCV 包
    import cv2
    
    
    python
        使用 imread()函数读取一个特定的图像
    image = cv2.imread('image_flower.jpg')
    
    
    python
        现在可以调用imshow()函数来呈现这个图像
    cv2.imshow('BGR_Penguins',image)
    
    
    python
        
现在,使用cvtColor()函数将此图像转换为灰度。
    image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
    cv2.imshow('gray_penguins',image)
    
    
    python
        
AI人工智能 边缘检测
当人类观察到粗线条的手绘图像时,他们能够迅速辨识出多种物体及其姿态。 这一现象表明了边缘在我们日常生活中以及计算机视觉领域中的关键作用。该软件库OpenCV则通过其内置的Canny算子函数来实现高效的边缘检测功能。
示例
    以下示例显示了边缘的清晰标识。
    
    
    python
        如下所示导入 OpenCV 包
    import cv2
    import numpy as np
    
    
    python
        使用 imread()函数读取一个指定的图像
    image = cv2.imread('Penguins.jpg')
    
    
    python
        现在,使用 Canny()函数来检测已读图像的边缘。
    cv2.imwrite('edges_Penguins.jpg',cv2.Canny(image,200,300))
    
    
    python
        要显示具有边缘的图像,请使用 imshow()函数,参考以下代码
    cv2.imshow('edges', cv2.imread('edges_Penguins.jpg'))
    
    
    python
        该 Python 程序将生成一张命名为 edges_penguins.jpg 的图片,并随后执行边缘检测的过程。

AI人工智能 人脸检测
将人脸识别视为计算机视觉中的一个有趣领域,并能显著提升真实感。 OpenCV预装了一个功能用于执行精确的人脸识别。 本研究将采用多级特征分析方法实现精确的人脸定位。
Haar级联数据
在我们的OpenCV包中提供了这些数据资源。 安装OpenCV后,在项目目录下的'haarcascades'文件夹中有不同应用程序对应的.xml文件。 包含不同功能模块的应用程序配置文件在这里面。 现在,请将所有这些配置文件进行拷贝粘贴到当前项目下的一个新的'haarcascades'文件夹中使用即可完成配置设置
示例
使用 Haar 级联检测下图中显示的 Amitabh Bachan 的面部的 Python 代码

如下所示导入 OpenCV 包
    import cv2
    import numpy as np
    
    
    python
        现在,使用 HaarCascadeClassifier 来检测脸部
    face_detection=
    cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/
    haarcascade_frontalface_default.xml')
    
    
    python
        使用 imread() 函数读取一个指定的图像,
    img = cv2.imread('AB.jpg')
    
    
    python
        将其转换为灰度,因为它会接受灰色图像
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    
    python
        接下来,使用 face_detection.detectMultiScale,执行实际的人脸检测
    faces = face_detection.detectMultiScale(gray, 1.3, 5)
    
    
    python
        围绕整个脸部绘制一个矩形
    for (x,y,w,h) in faces:
       img = cv2.rectangle(img,(x,y),(x+w, y+h),(255,0,0),3)
    cv2.imwrite('Face_AB.jpg',img)
    
    
    python
        如图所示的该程序将生成一个以 Face_AB.jpg 命名的图像 该图像包含人脸检测

眼睛检测
在计算机视觉领域中,眼睛检测被视为一项极具创新性的技术,在提升图像真实感与未来感的同时也带来了显著的研究价值。 OpenCV 提供了一个内置功能模块专门用于眼睛检测。 本研究将采用 Haar 级联分类器这一成熟方法来进行眼睛检测工作。
案例如下所示:通过使用 Haar-like特征检测器开发了一款基于Python的面部识别算法来识别下图中的Amitabh Bachan的脸部。

如下所示导入 OpenCV 包
    import cv2
    import numpy as np
    
    
    python
        使用 HaarCascadeClassifier 检测脸部
    eye_cascade = cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/haarcascade_eye.xml')
    
    
    python
        使用 imread()函数读取指定图像
    img = cv2.imread('AB_Eye.jpg')
    
    
    python
        然后,将其转换为灰度,因为它会接受灰色图像
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    
    python
        使用 eye_cascade.detectMultiScale ,执行实际的人脸检测
    eyes = eye_cascade.detectMultiScale(gray, 1.03, 5)
    
    
    python
        现在,围绕整个脸部绘制一个矩形
    for (ex,ey,ew,eh) in eyes:
       img = cv2.rectangle(img,(ex,ey),(ex+ew, ey+eh),(0,255,0),2)
    cv2.imwrite('Eye_AB.jpg',img)
    
    
    python
        这个 Python 程序将创建一个名为 Eye_AB.jpg 的图像,如图所示,

