两者主要的区别在于接口和效率。二者接口几乎一样,不同的是用C++的话,矩阵用的是cv::Mat,Python里面用的是numpy.array,用法和接口都不一样,但文档丰富,使用也非常方便,原理也相似。效率方面,Python的接口实际上只是一层Binding,最终还是调用libopencv_*.so里面的函数。
两者主要的区别在于接口和效率。
实际上Python和C++的OpenCV接口几乎一样,不同的是用C++的话,矩阵用的是cv::Mat,Python里面用的是numpy.array,用法和接口都不一样,但文档丰富,使用也非常方便,原理也相似。
效率方面,Python的接口实际上只是一层Binding,最终还是调用libopencv_*.so里面的函数,所以在OpenCV这一层效率与C++是完全一致的。少数不同的就是它的numpy.array和cv::Mat。Numpy底层也是使用C Extension的方法写,但相比C++版的OpenCV接口,Python的接口需要把Numpy的数据转化成OpenCV的C接口可接受的输入。
实测Python写的程序会慢,但具体慢多少并没有测试数据可支撑。
用Python写实际上也不会比C++开发快多少,因为接口都是一样的,建议不如直接用C++写。
延伸阅读:
什么是open cv?
Open CV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖)。
Open CV 库用 C语言 和 C++ 语言编写,可以在 Windows、Linux、Mac OS X 等系统运行。同时也在积极开发 Python、Java、Matlab 以及其他一些语言的接口,将库导入安卓和 iOS 中为移动设备开发应用。
Open CV 是跨平台的,可以在 Windows、Linux、Mac OS、Android、iOS 等操作系统上运行。
文章标题:基于C++的open cv 和 基于 Python 的open cv 有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38593