cv2 imread函数 python_面向Python的OpenCV轻松入门——第一章(1)
发布日期:2022-02-19 00:02:21 浏览次数:6 分类:技术文章

本文共 4987 字,大约阅读时间需要 16 分钟。

第1章 OpenCV入门

Opencv是一个开源的计算机视觉库,1990年由英特尔的 Gary Bradski启动。Bradski在访 学过程中注意到,在很多优秀大学的实验室中,都有非常完备的内部公开的计算机视觉接口。这些接口从一届学生传到另一届学生,对于刚入门的新人来说,使用这些接口比重复造轮子方 便多了。这些接口可以让他们在之前的基础上更有效地开展工作。Opencv正是基于为计算机 视觉提供通用接口这一目标而被策划的。

 由于要使用计算机视觉库,用户对处理器(CPU)的要求提升了,他们希望购买更快的处 理器,这无疑会增加英特尔的产品销量和收入。这也许就解释了为什么 Opencv是由硬件厂商而非软件厂商开发的。当然,随着 Opencv项目的开源,目前其已经得到了基金会的支持,很大一部分研究主力也转移到了英特尔之外,越来越多的用户为 Opencv做出了贡献。

 Opencv库由C和C+语言编写,涵盖计算机视觉各个领域内的500多个函数,可以在多 种操作系统上运行。它旨在提供一个简洁而又高效的接口,从而帮助开发人员快速地构建视觉应用。

 Opencv更像一个黑盒,让我们专注于视觉应用的开发,而不必过多关注基础图像处理的具体细节。就像 Photoshop一样,我们可以方便地使用它进行图像处理,我们只需要专注于图 像处理本身,而不需要掌握复杂的图像处理算法的具体实现细节。

 本章将介绍 Opencv的具体配置过程及基础使用方法。

1.1 如何使用

 Python的开发环境有很多种,在实际开发时我们可以根据需要选择一种适合自己的。在本书中,我们选择使用 Anaconda作为开发环境。本节简单介绍如何配置环境,来实现在 Anaconda下使用基于 Python语言的 Opencv库。

1. Python的配置

 在本书中,我们使用的是 Python3版本。虽然 Python2和 Python3有很多相同之处,以至于 Python2的读者也可以使用本书,但还是要说明一下,本书直接面向的版本是 Python3。

 可以在Python的官网上(htps:/www.python.org/downloads/)下载Python3的解释器。在该网页顶部已经指出了最新的版本,例如“ Download Python3.7.0”就表示当前(2018年10月9日)的最新版本是 Python3.7.0,单击“ Download Python3.70”,就会开始下载解释器软件。

 如果想安装其他版本,可以向下拖动鼠标,你将看到一个滚动页面,其中显示了一个列表集,其中列出了不同的安装包,具体选择哪种安装包依赖于两个因素:

  • 操作系统,例如 Windows、 macos、Liux等
  • 处理器位数,例如32位或者64位。

 根据自己的计算机配置,在列表集中选择对应的安装包下载。

下载完成后,按照提示步骤完成安装即可。

2.Anaconda配置

 可以在Anaconda的官网上(htps:/www.anaconda.com/download/)下载Anaconda。在下载 页顶部指出了当前的最新版本。

 如果想安装其他版本,可以在下载页内根据实际情况选择。具体选择哪种安装包依赖于三个因素

  • Python的版本,例如 Python2.7或者 Python3.7等
  • 操作系统,例如 Windows、 macos、 Linux等。
  • 处理器位数,例如32位或者64位

 根据自己的环境配置,在下载页中选择对应的安装包下载。下载完成后,按照提示步骤完成安装即可。

3.OpenCV的配置

 可以从官网下载 Opencv的安装包,编译后使用;也可以直接使用第三方提供的预编译包 安装。

 在本书中,我们选择由PyPI提供的 Opencv安装包,可以在htps:/ pypi. org/project/opencv-python/上面下载最新的基于 Python的 Opencv库。同样,下载页顶部指出了当前的最 新版本。

 如果想安装其他版本,可以在 Download files栏目内根据实际情况选择。具体选择哪种安装包依赖于三个因素:

  • Python的版本,例如 Python2.7或者 Python3.7等。
  • 操作系统,例如 Windows、 macos、 Linux等。
  • 处理器位数,例如32位或者64位。

完成下载后,在 Anaconda Prompt内使用 pip install完整路径文件名完成安装。例如,假设文件存储在D: anacondallib目录下面,则要使用的语句为:

>> pip install F:\anaconda\Lib\opencv_python-3.4.3.18-cp37-cp37m-win_amd64.whl
d90d1eea67021ed3fcdf24e5326f125f.png

安装完成后,可以在 Anaconda Prompt I内使用 conda list语句查看安装是否成功。如果安装成功,就会显示安装成功的 Opencv库及对应的版本等信息。需要注意,不同安装包的名称及版本号可能略有差异。例如,图1-1中的包列表显示了系统内配置了 Opencv其他版本的情况,该图说明在当前系统内配置的是 Opencv4.4.0.44版本。

3d7a3c4d377af590f63e7dfdcf9fdf0c.png
图1-1 包列表

这里主要介绍了如何在 Windows系统下对环境进行配置,如果需要配置其他操作系统下的环境,请参考官网的具体介绍。

1.2 图像处理操作

 在图像处理过程中,读取图像、显示图像、保存图像是最基本的操作。本节将简单介绍这几项基本操作。

1.2.1 读取图像

 Opencv提供了函数cv2.imrad来读取图像,该函数支持各种静态图像格式。该函数的语 法格式为:

retval=cv2.imread( filename[, flags]

式中:

  • retval是返回值,其值是读取到的图像。如果未读取到图像,则返回“None
  • filename表示要读取的图像的完整文件名。
  • flags是读取标记。该标记用来控制读取文件的类型,具体如表1-1所示。表1-1中的第一列参数与第三列数值是等价的。例如cv2.IMREAD UNCHANGED=-1,在设置参数时,既可以使用第一列的参数值,也可以采用第三列的数值。
2ed384d3be60aedaebfda86303ab94a2.png
58938b2db2676f11599bd0336ee3e63b.png

函数cv2.imread()能够读取多种不同类型的图像,具体如表1-2所示。

2ca6cbd0973ddd2637ca7c4180f2e78b.png

例如,想要读取当前目录下文件名为lena.bmp的图像,并保持按照原有格式读入,则使用 的语句为:

lena=cv2. imread("lena. bmp",-1)

 需要注意,上述程序要想正确运行,首先需要导入cv2模块,大多数常用的 Opencv函数都在cv2模块内。与cv2模块所对应的cv模块代表传统版本的模块。这里的cv2模块并不代表该模块是专门针对 Opencv2版本的,而是指该模块引入了一个改善的API接口。在cv2模块内部采用了面向对象的编程方式,而在cv模块内更多采用的是面向过程的编程方式。 本书中所使用的模块函数都是cv2模块函数,为了方便理解,在函数名前面加了“cv2.”。但是如果函数名出现在标题中,那么希望突出的是该函数本身,所以未加“cv2.”

例1.1】使用cv2.tread()函数读取一幅图像。根据题目要求,编写代码如下:

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

 上述程序首先会读取当前目录下的图像lena.bmp,然后使用 print语句打印读取的图像数据。运行上述程序后,会输出图像的部分像素值,如图1-2所示。

d29bae774a1fe3de6276da3560185351.png

1.2.2 显示图像

 Opencv提供了多个与显示有关的函数,下面对常用的几个进行简单介绍。

  1. namedWindow函数

函数cv2.namedWindow()用来创建指定名称的窗口,其语法格式为:

None =cv2. namedwindow( winname)

式中, winname是要创建的窗口的名称。例如,下列语句会创建一个名为 lesson的窗口:

cv2. namedwindow(lesson)
  1. imshow函数

函数cv2. ishow用来显示图像,其语法格式为:

None = cv2.imshow(winname,mat)

式中:

  • winname是窗口名称。
  • mat是要显示的图像。

【例1.2】  在一个窗口内显示读取的图像。

根据题目要求,编写代码如下:

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

 在本程序中,首先通过cv2.read()函数读取图像lena.bmp,接下来通过cv2.namedWindow函数创建一个名为 lesson的窗口,最后通过cv2.imshow函数在窗口 lesson内显示图像lena.bmp。

 运行上述程序,得到的运行结果如图1-3所示。

ebec7fcefafba34e91369df1ee178c38.png

 在实际使用中,可以先通过函数cv2.namedWindow()来创建一个窗口,再让函数cv2.imshow()引用该窗口来显示图像。也可以不创建窗口,直接使用函数cv2.imshow()引用一个并不存在的窗口,并在其中显示指定图像,这样函数cv2.imshow()实际上会完成如下两步操作.

第1步:函数cv2. imshow()创建一个指定名称的新窗口。

第2步:函数cv2.imshow()将图像显示在刚创建的窗口内。

例如,在下面的语句中,函数cv2. imshow()完成了创建demo窗口和显示 image图像的操 作,该语句的功能与例1.2相同。

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

 在显示图像时,初学者最经常遇到的一个错误是“eror:(-215: Assertion failed)size. width>0&&size. height>0 in function'cv: ashow”,说明当前要显示的图像是空的(None),这通常是由 于在读取文件时没有找到图像文件造成的。一般来说,没有找到要读取的图像文件,可能是因为文件名错误;如果确认要读取的图像的完整文件名(路径名和文件名)没有错,那么往往是工作路径配置错误造成的。

 例如,当前程序所在路径为e: \lesson,要读取当前路径下存在的图像 image\lena.bmp。那么:

  • 如果设置的当前工作路径是e: lesson,程序就会读取当前工作路径下的文件imagellena.bmp,该文件的完整文件名就是e: Nesson\ image\lena.bmp。正是我们想要读取 的指定文件。
  • 如果设置的当前工作路径不是e:\lesson,例如,当前的工作路径是e: \python,程序仍然会读取当前工作路径下的文件 image\lena.bmp(而不是读取当前程序所在路径下的imagellena.bmp),该文件的完整文件名就是e: \python\ image \lena.bmp。显然,这样是无法读取到指定图像的。

为了避免上述错误,可以在读取图像前判断图像文件是否存在,并在显示图像前判断图像是否存在。

  1. witkey函数

 函数cv2.witkey()用来等待按键,当用户按下键盘后,该语句会被执行,并获取返回值。其语法格式为:

retval =cv2.witkey([delay]

式中:

  • retval表示返回值。如果没有按键被按下,则返回-1:如果有按键被按下,则返回该按 键的ASCI码

  • delay表示等待键盘触发的时间,单位是ms。当该值是负数或者零时,表示无限等待。该值默认为0.

在实际使用中,可以通过函数cv2.witkey获取按下的按键,并针对不同的键做出不同的 反应,从而实现交互功能。例如,如果按下A键,则关闭窗口:如果按下B键,则生成一个窗口副本。

72e562b0e8e35d8d103b99af45918977.gif
87c2e4e242e33b6faeb71d0a41c1f60c.png

joker-wt

扫码|关注我们

微信号|joker-wt123

新浪微博|梧tw桐

承蒙关照!!!

我的心愿是——世界和平

转载地址:https://blog.csdn.net/weixin_34238178/article/details/112179069 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:git head指向老版本_git工具的使用以及部署gitlab仓库详解
下一篇:android按住录音按钮_最远15米闻声识字!讯飞智能录音笔SR501评测:话音刚落文稿已成...

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月23日 06时31分36秒