欢迎来到军工软件开发人才培养基地——学到牛牛

OpenCV起步

时间:2024-05-06 07:01:10 来源:学到牛牛

OpenCV是开源计算机视觉库,它是一个开源计算机视觉和机器学习软件库,用于为计算机视觉专业人员提供灵活、功能强大的开发接口。OpenCV由C语言和C++实现,提供C++、Python、Java等多种编程语言接口,并支持Windows、Linux、MacOS、Android和IOS等平台。

1、Python环境安装

1.1 Python简介

Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,然后在1991年初发布。Python是一种跨平台的解释型语言,它功能强大,简单易学,具有面向对象编程的功能。

Python是完全开源的软件,具有开放的特征,能很方便地将其他语言的类库封装为Python的模块来使用。由于Python语言的特点,以及其开源和开放的特性,吸引了编程社区为Python开发了很多实用且功能强大的包,这使得Python在科学计算、数据可视化、人工智能和Web编程等方面得到了广泛的应用。

 

1.2 Python安装

Python是一个完全开源的软件,从官网上可以下载最新版本的Python安装文件,这里以Python 3.8.1稳定版本为例。

虽然Python是跨平台的,但是安装软件不跨平台,安装时需要下载对平台的安装文件,我这里的示例是在64位windows 10平台上开发的,所以下载64位Windows平台平台安装文件,如图1.1所示。

图1.1 Python安装文件

Python的安装过程与一般的Windows程序安装过程一样,首先双击“python-3.8.1-amd64.exe”安装文件,然后跟着安装向导完成安装过程。

在安装过程中需要勾选“Add Python 3.8 to PATH”选项,届时会自动将Python添加到Windows系统的环境变量PATH中,这样就可以在Windows的任何路径下使用Python相关工具。

安装过程中,如果想要重新指定新的安装路径,可以点击“Customize installation”进行定制安装,然后根据需求自定义安装即可。

1.3 PyCharm安装

PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。

PyCharm是由JetBrains打造的一款Python IDE工具,它有成熟的企业版本(Professional Edition),还有免费的社区版本(Community Edition),这里使用社区版本即可。

 

1.4 OpenCV安装

OpenCV是一个基于Apache2.0许可发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。

OpenCV用C++语言编写,它具有C++、Python、Java等接口,安装方式如下。

pip install opencv-python==3.4.11.45

 

需要注意,安装默认的opencv-ptyhon为最新版本(4.x版本),该版本没有提供智能提示。

 

2、OpenCV入门案例

以下例子是为OpenCV入门例子,用于打开指定图片,并显示出来。

import cv2 as cv

 

# 第一步:读取指定路径的图像文件,返回numpy.ndarray对象

img = cv.imread("img/cb.jpg")

 

# 第二步:显示图像,其中test为窗口名,建议使用英文(中文乱码)

cv.imshow("test", img)

 

# 等待时间(单位:毫秒),0表示任意键终止

cv.waitKey(0)

 

# 销毁所有窗口

cv.destroyAllWindows()

 

注意,在imshow()函数中使用中文创建窗口名,会出现乱码现象,原因是imshow()函数的窗口标题是GBK编码,而Python3默认UTF-8编码,因此编码集不一致,而帮出现乱码。目前暂没有完全解决方案,建议使用英文命名。

 

3、计算机眼中的图像

在计算机眼中,所有的图像都是由一个个的元像点组成,像素点是由0-255之间的数值组成,它表示该点的亮度,0为最黑,255为最高,如图3.1所示。

图3.1 图像组成

一张彩色图片就是一个矩阵,每个像素点由BGR值组成,BGR表示3个通道,其中B表示蓝色通道,G表示绿色通道,R表示红色通道,值范围为0-255。

灰度图片也是一个矩阵,每个像素点只有一个通道,值范围为0-255,此值表示该点的高度,0为最暗,255为最亮。

查看图片的像素值代码示例如下。

import cv2 as cv

 

# 读取图片

img = cv.imread("img/cb.jpg")

 

# 显示图像,可创建多个窗口

cv.imshow("test", img)

 

# 测试:将获取到的图像像素值存储到本地

f = "E:/tmp/img/test.txt"

count = 0

with open(file=f, mode="w", encoding="utf8") as a:

    for i in img:

        count = count + 1

        # 获取每一行每个像素点的BGR值

        a.write(f"\n\n第{count}行\n")

        a.write(str(i))

 

# 等待时间(单位:毫秒),0表示任意键终止

cv.waitKey(0)

# 销毁所有窗口

cv.destroyAllWindows()