第一章: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:计算 摄影扩展模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器视觉学习笔记】双边滤波算法(C++)

目录源码滤波器主函数效果完整源码平台:Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文所用源码修改自双边滤波(bilateral filter)以及联合双边滤波(joint bilateral filter)—— flow_specter 源码 滤波器 // 双边滤波 // src…

第二章:图像处理基础

第二章:图像处理基础操作一、图像的基本表示方法:1. 二值图像:2. 灰度图像:3. 彩色图像:二、像素处理:1. 二值图像及灰度图像:2.彩色图像:3. 使用numpy.array访问像素:三…

《Head First设计模式》 读书笔记16 其余的模式(二) 蝇量 解释器 中介者

《Head First设计模式》 读书笔记16 其余的模式(二) 蝇量 解释器 中介者 蝇量(Flyweight Pattern) 如想让某个类的一个实例能用来提供许多“虚拟实例”,就使用蝇量模式(Flyweight Pattern) 。 例…

洛谷P1525 关押罪犯

P1525 关押罪犯 题目描述 S 城现有两座监狱,一共关押着N 名罪犯,编号分别为1~N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示…

【机器视觉学习笔记】Hough变换直线检测(C++)

目录源码效果平台&#xff1a;Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文源码摘自OpenCV2马拉松第22圈——Hough变换直线检测原理与实现 源码 #include <opencv2\opencv.hpp> #include <iostream> #include <opencv2\imgproc\types_c.h> #in…

第3章:图像运算

第3章&#xff1a;图像运算one. 图像加法运算&#xff1a;1. 加号运算符"":2. cv2.add()函数&#xff1a;two. 图像加权和&#xff1a;three. 按位逻辑运算&#xff1a;1. 按位与运算&#xff1a;2. 按位或运算&#xff1a;3.按位非运算&#xff1a;4. 按位异或运算&…

JMS中的消息通信模型

1. MQ简介&#xff1a; 消息队列&#xff08;Message Queue&#xff0c;简称MQ&#xff09;,是应用程序与应用程序之间的一种通信方法。应用程序通过发送和检索出入列队的针对应用程序的数据 - 消息来通信&#xff0c;而无需专用连接来链接它们。程序之间通过在消息中发送数据进…

【机器视觉学习笔记】最近邻插值实现图片任意角度旋转(C++)

目录原理源码RotateImage主函数效果完整源码速度优化源码优化效果平台&#xff1a;Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文算法改进自图形算法与实战&#xff1a;6.图像运动专题&#xff08;5&#xff09;图像旋转-基于近邻插值的图像旋转 —— 进击的CV 原理…

UGUI的优点新UI系统

UGUI的优点新UI系统 第1章 新UI系统概述 UGUI的优点新UI系统&#xff0c;新的UI系统相较于旧的UI系统而言&#xff0c;是一个巨大的飞跃&#xff01;有过旧UI系统使用体验的开发者&#xff0c;大部分都对它没有任何好感&#xff0c;以至于在过去的很长一段时间里&#xff0c;大…

【探索HTML5第二弹05】响应式布局(中),一步一步响应式布局

前言 前天初步探究了一次响应式布局&#xff0c;虽然花了一天功夫&#xff0c;做出来的东西还是不行&#xff0c;在此我还是认为要做响应式布局设计应该先行&#xff0c;应该先制作3个以上的设计图出来&#xff0c;但是对于手机来说&#xff0c;图片流量也是个问题&#xff0c;…

通过使用CSS字体阴影效果解决hover图片时显示文字看不清的问题

1.前言 最近需要加入一个小功能&#xff0c;在鼠标越过图片时&#xff0c;提示其大小和分辨率&#xff0c;而不想用增加属性title来提醒&#xff0c;不够好看。然而发现如果文字是一种颜色&#xff0c;然后总有概率碰到那张图上浮一层的文字会看不到&#xff0c;所以加入文字字…

第4章:色彩空间类型转换

第四章&#xff1a;色彩空间类型转换one. 色彩空间基础知识&#xff1a;1. GRAY色彩空间&#xff1a;2. XYZ色彩空间3. YCrCb色彩空间3. HSV色彩空间4. HLS 色彩空间5. CIEL * a * b *色彩空间6. CIEL * u * v *色彩空间7. Bayer色彩空间two. 类型转换函数&#xff1a;three. 类…

【机器视觉学习笔记】双线性插值实现图片任意角度旋转(C++)

目录原理源码RotateImage_BilinearInterpolation主函数效果与最近邻插值比较原图最近邻插值效果&#xff08;局部&#xff09;双线性插值效果&#xff08;局部&#xff09;完整源码平台&#xff1a;Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 原理 如图所示&#xff0…

第5章 - 几何变换

第五章-几何变换one. 缩放:two. 翻转&#xff1a;three. 仿射&#xff1a;1. 平移&#xff1a;2. 旋转&#xff1a;3. 更多复杂的仿射变换&#xff1a;four. 透视&#xff1a;five. 重映射&#xff1a;1. 映射参数的理解&#xff1a;2. 复制&#xff1a;3. 绕x轴旋转&#xff1…

安装设置Android Studio Win7安装

发一下牢骚和主题无关&#xff1a; 让人等待已久的Google I/O 2013 大会没有给我们带来Android5.0&#xff0c;也没有带来Adnroid4.3等等&#xff0c;但带来了Android Studio&#xff0c;虽说是预览版&#xff0c;又是基于Intellij IDEA&#xff0c; 但是也无不让开辟者们高兴。…

【树莓派学习笔记】一、烧录系统、(无屏幕)配置Wifi和SSH服务

目录系统镜像的准备格式化TF卡烧录镜像配置Wifi开启SSH服务第一次开机平台&#xff1a;树莓派3B 版本&#xff1a; 2021-05-07-raspios-buster-armhf 系统镜像的准备 树莓派资源里有许多资源&#xff0c;包括我们要用到的镜像。 格式化TF卡 将TF卡格式化为FAT32格式。 …

第6章-阈值处理

第六章-阈值处理one. threshold函数&#xff1a;1. 二值化阈值处理&#xff08;cv2.THRESH_BINARY&#xff09;&#xff1a;2. 反二值化阈值处理(cv2.THRESH_BINARY_INV)3. 截断阈值化处理(cv2.THRESH_TRUNC)4. 超阈值零处理(cv2.THRESH_TOZERO_INV)5.低阈值零处理(cv2.THRESH_…

【树莓派学习笔记】二、(无屏幕)SSH远程登录、图形界面及系统配置

目录确定树莓派LAN IP使用PuTTY登陆带图形界面的远程登陆Xming方案VNC Server 方案系统配置换源(可选)备份原文件查询系统版本编辑sources.list文件同步更新源更新软件包重启树莓派固定LAN IP平台&#xff1a;树莓派3B 版本&#xff1a; 2021-05-07-raspios-buster-armhf 确定…

Centos7完全分布式搭建Hadoop2.7.3

(一&#xff09;软件准备 1&#xff0c;hadoop-2.7.3.tar.gz&#xff08;包&#xff09; 2,三台机器装有cetos7的机子 &#xff08;二&#xff09;安装步骤 1&#xff0c;给每台机子配相同的用户 进入root : su root 创建用户s: useradd s 修改用户密码&#xff1a;passwd s 2…

第7章:图像的平滑处理

第7章&#xff1a;图像的平滑处理一、均值滤波&#xff1a;二、方框滤波&#xff1a;三、高斯滤波&#xff1a;四、中值滤波五、双边滤波&#xff1a;六、2D卷积​ 图像的平滑处理是在尽量图像原有信息的情况下&#xff0c;过滤掉图像内部的噪声。由于图像平滑处理的同时通常伴…