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()函数进行颜色空间转换,该函数接受输入图像和转换类型作为参数。
