anaconda 安装opencv_面向Python的OpenCV轻松入门——第一章(1)

第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
2d4e17a0593d421fa52a150c2590c07b.png

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

32209eb4e1d79b74ca7dd845ee0b9f5b.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,在设置参数时,既可以使用第一列的参数值,也可以采用第三列的数值。
ddb682720262d15639b64a89e940777b.png
8e9f00c7fd0ea470c2c5c6aba68979b5.png

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

48fc511c7bd237b4ecdd954eb24a1309.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所示。

6393eb8aebadb131cc62edf4db5aec0f.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所示。

fa03a60a9bb0e75d38b0d3d85266d005.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键,则生成一个窗口副本。

0ae8e1b80363f77f2c5a2f4c096f8676.gif 9a5a22203015ca4119c090a3e4590ab9.png

joker-wt

扫码|关注我们

微信号|joker-wt123

新浪微博|梧tw桐

承蒙关照!!!

我的心愿是——世界和平

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值