opencv各版本区别


opencv各版本区别  

一、OpenCV简介

OpenCV是一个由Intel公司俄罗斯团队发起并参与维护的开源计算机视觉处理软件库,它支持众多与计算机视觉和机器学习相关的算法,并且不断扩展。

1.1 OpenCV的优势:

编程语言:OpenCV主要基于C++实现,同时提供Python、Ruby、Matlab等语言的接口。OpenCV-Python是OpenCV的Python API,结合了OpenCV C++ API和Python语言的最佳特性。

跨平台性:OpenCV可以在不同的系统平台上使用,包括Windows、Linux、OS X、Android和iOS。其积极开发团队致力于基于CUDA和OpenCL的高速GPU操作接口的开发。

丰富的API:OpenCV涵盖了主流的机器学习算法,同时添加了对深度学习的支持。它提供了完善的传统计算机视觉算法,并活跃地持续扩展。

1.2 OpenCV-Python介绍

OpenCV-Python是Python的绑定库,专注于解决计算机视觉问题。Python是一种由Guido van Rossum开发的通用编程语言,因其简单性和代码可读性而广受欢迎。相比C++等语言,Python速度较慢,但这意味着它可以轻松地使用C++进行扩展。OpenCV-Python是原始OpenCV C++实现的Python包装器,使得在Python中使用C++代码同样高效。

OpenCV-Python还使用了Numpy,这是一个高度优化的数据库操作库,具有MATLAB风格的语法。所有OpenCV数组结构都转换为Numpy数组,这使得与Numpy的其他库(如SciPy和Matplotlib)的集成更加容易。

1.3 OpenCV部署方法

安装OpenCV之前需要先安装numpy和matplotlib。创建Python虚拟环境cv,并在其中进行安装。由于一些经典算法有版权限制,新版本有较多限制,因此推荐安装3.4.3以下的版本。可以通过以下命令进行安装:

pip install opencv-python==3.4.2.17

现在可以通过运行一段代码来测试是否安装成功。

1.4 OpenCV的模块

OpenCV包含多个模块,如下所示:

对于图像处理其他更高层次的方向及应用,OpenCV也有相关的模块实现,如features2d模块用于提取图像特征以及特征匹配,nonfree模块实现了一些专利算法,objdetect模块实现了一些目标检测的功能等。

二、图像的基础操作

2.1 图像的IO操作

我们将介绍如何读取、显示和保存图像。

(1)读取图像

使用cv.imread()函数读取图像,可以根据需要选择读取方式的标志,如cv.IMREAD_COLOR(以彩色模式加载图像)、cv.IMREAD_GRAYSCALE(以灰度模式加载图像)等。

(2)显示图像

使用cv.imshow()函数显示图像,需要指定窗口名称和要显示的图像。需要使用cv.waitKey()函数给图像绘制留下时间,否则窗口可能会出现无响应情况,并且图像无法显示出来。也可以使用matplotlib对图像进行展示。

(3)保存图像

使用cv.imwrite()函数保存图像。

2.2 绘制几何图形

包括绘制直线、圆形、矩形以及在图像中添加文字等。

2.4 获取图像的属性

图像属性包括行数、列数和通道数、图像数据类型、像素数等。

2.5 图像通道的拆分与合并

有时需要在B、G、R通道图像上单独工作,可以将BGR图像分割为单个通道,或者将这些单独的通道合并到BGR图像中。

2.6 色彩空间的改变

OpenCV提供了多种颜色空间转换方法,最常见的转换方法是将BGR转换为Gray或HSV。可以使用cv.cvtColor()函数进行颜色空间转换,该函数接受输入图像和转换类型作为参数。

  opencv各版本区别