IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 第一章:OpenCV入门 -> 正文阅读

[人工智能]第一章:OpenCV入门

第一章:OpenCV入门

OpenCV是一个开源的计算机视觉库,1999年有英特尔的Gary Bradski启动。OpenCV库由C和C++语言编写,涵盖计算机视觉各个领域内的500多个函数,可以在多个操作系统上运行。它旨在提供一个简洁而又高效的接口,从而帮助共夺得开发人员快速的构建视觉系统。

本章主要介绍OpenCV的简单使用

图像处理的基本操作:

图像处理的最基本操作包括:

  • 读取图像
  • 显示图像
  • 保存图像

1. 读取图像:

在OpenCV中使用cv2.imread()函数来读取图像,该函数支持各种静态图像格式。

语法为:retval = cv2.imread( filename[, flags] )

  • retval:返回值,读取到的图像。如果未读取到图像,则返回 None
  • filename:表示要读取的图像的完整路径。
  • flags:是读取标记。该标记用来控制读取文件的类型,具体如下表表示。
    注意:表中第一列参数和第三列参数是等价的。即:cv2.IMREAD_UNCHANGED = -1
含义数值
cv2.IMREAD_UNCHANGED保持原格式不变-1
cv2.IMREAD_GRAYSCALE将图像调整为单通道灰度图像0
cv2.IMREAD_COLOR将图像调整为3通道的BGR图像。该值是默认值1
cv2.IMREAD_ANYDEPTH当载入的图像深度为16位或者32位时,就返回其对应深度的图像;否则,将其转换为8位图像2
cv2.IMREAD_ANYCOLOR以任何可能的颜色格式读取图像4
cv2.IMREAD_LOAD_GDAL使用gdal驱动程序加载图像8
cv2.IMREAD_REDUCED_GRAYSCALE_2将图像转化为单通道灰度图像,并将图像尺寸减小1/2
cv2.IMREAD_REDUCED_COLOR_2将图像转换为3通道BGR彩色图像,并将图像尺寸减小1/2
cv2.IMREAD_REDUCED_GRAYSCALE_4将图像转化为单通道灰度图像,并将图像尺寸减小1/4
cv2.IMREAD_REDUCED_COLOR_4将图像转换为3通道BGR彩色图像,并将图像尺寸减小1/4
cv2.IMREAD_REDUCED_GRAYSCALE_8将图像转化为单通道灰度图像,并将图像尺寸减小1/8
cv2.IMREAD_REDUCED_COLOR_8将图像转换为3通道BGR彩色图像,并将图像尺寸减小1/8
cv2.IMREAD_IGNORE_ORIENTATION不以EXIF的方向为标记旋转图像

函数cv2.imread()支持读取多种不同类型的图像:

在这里插入图片描述

例如:使用cv2.imread()函数读取图像

import cv2
lena = cv2.imread("sky.png")
print(lena)

2. 显示图像:

在OpenCV中提供了多个与显示相关的函数:

  • namedWidow函数:

  • 用来创建指定名称的窗口

  • 语法格式:None = cv2.namedWindow( winname ) 式中 winname 指的是创建窗口的名称
    例如创建一个名字为lesson的窗口

    CV2.namedWindow("lesson")
    
  • imshow函数:

    • 用来显示图像
    • 语法格式:None = cv2.imshow( winname, mat ) 式中winname为窗口名称,mat为要显示的图像。

    例如:

    import cv2
    lena = cv2.imread("lena.bmp")
    cv2.namedWindow("lesson")
    cv2.imshow("lesson", lena)
    

    上述代码中,首先通过cv2.imread()函数读取图像lena.bmp,然后通过cv2.namedWindow()函数创建了一个名为lesson的窗口,最后通过cv2.imshow()函数在lesson窗口中显示图像lena.bmp。

    注意:在实际使用中也可以不创建窗口,直接使用函数cv2.imshow()引用一个并不存在的创空,并在其中显示指定的图像,如:

    import cv2
    lena = cv2.imread("lena.bmp")
    cv2.imshow("demo", lena)
    
  • waitKey函数:

    • 用来等待按键,当用户按下键盘后,该语句会被执行,并返回一个值
    • 语法:retval = cv2.waitKey([delay])
      • retval:表示返回值。如果没有按键被按下,则返回-1;如果有按键备案下则返回该按键的ASCII码
      • delay:表示等待键盘触发的时间,单位是ms。当该值为负数或者0时,表示无限等待。默认为0

    实际使用中,可以通过函数cv2.waitKey()获取按下的按键,并针对不同的键做出不同的反应从而实现交互功能

    import cv2
    lenam = cv2.imread("lena.png")
    cv2.imshow("demo", lena)
    key = cv2.waitKey()
    if key == ord("A"):
        CV2.imshow("PressA", lena)
    elif key == ord("B"):
    	cv2.imshow("PressB", lena)
    
  • destroyWindow函数:

    • 用来释放(销毁)指定窗口
    • 语法:None = cv2.destroyWindow( winname ) winname为窗口名字
    import cv2
    lena = cv2.imread("lena.png")
    cv2.imshow("demo", lena)
    cv2.waitKey()
    cv2.destroyWindow("demo")
    
  • destroyAllWindows函数

    • 用来释放(销毁)所有窗口
    • 语法:None = cv2.destroyAllWindows()
    import cv2
    lena = cv2.imread("lena.png")
    cv2.imshow("demo1", lena)
    cv2.imshow("demo2", lena)
    cv2.waitKey()
    cv2.destroyAllWindows()
    

3. 保存图像

在OpenCV中使用函数cv2.imwrite()来保存图像,该函数的语法是:

  • retval = cv2.imwrite( filename , img [, params ])

参数:

  • retval:返回值。如果保存成功,则返回True;如果失败,则返回False
  • filename:要保存目标文件的完整路径。
  • img:要保存的图像
  • params:保存类型参数,可选。
import cv2
lena = cv2.imread("lena.png")
r = cv2.imwrite("result.png", lena)

OpenCV贡献库介绍

目前,OpenCV库包含如下两部分:

  • OpenCV主库:即通常安装的OpenCV库,该库成熟稳定,有核心的OpenCV团队维护
  • OpenCV贡献库:该扩展库的名称为opencv_contrib,主要有社区开发和维护,其包含的视觉应用比OpenCV主库更全面。需要注意的是,OpenCV贡献库中包含非OpenCV许可的部分,并且包含专利保护的算法。因此使用该模块前需要特别注意。
  • OpenCV贡献库中包含非常多的扩展模块:
    • bioinspired:生物视觉模块
    • datasets:数据集读取模块
    • dnn:深度神经网络模块
    • face:人脸识别模块
    • matlab:MATLAB接口模块
    • stereo:双目立体匹配模块
    • text:视觉文本匹配模块
    • tracking:基于视觉的目标跟踪模块
    • ximgpro:图像处理扩展模块
    • xobjdetect:增强2D目标检测模块
    • datasets:数据集读取模块
    • dnn:深度神经网络模块
    • face:人脸识别模块
    • matlab:MATLAB接口模块
    • stereo:双目立体匹配模块
    • text:视觉文本匹配模块
    • tracking:基于视觉的目标跟踪模块
    • ximgpro:图像处理扩展模块
    • xobjdetect:增强2D目标检测模块
    • xphoto:计算 摄影扩展模块
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:14:10  更:2021-10-06 12:15:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 10:24:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码