所有openCV的google结果都是一样的:python只会稍微慢一点。但我从来没有看到任何关于这方面的描述。所以我决定做点什么,发现:
Python比OpenCV明显慢C++,即使对于平凡的程序也是如此。>/P>
我能想到的最简单的例子是在屏幕上显示网络摄像头的输出并显示每秒帧数。使用python,我获得了50FPS(在Intel atom上)。用C++,我得到了65 fPS,增加了25%。在这两种情况下,CPU的使用都是使用一个内核,据我所知,CPU的性能决定了CPU的使用。
另外,这个关于的测试用例与我在过去从一个移植到另一个的项目中看到的一致。
这一区别从何而来?在python中,所有openCV函数都返回图像矩阵的新副本。无论何时捕获图像,或是在C++中调整大小,都可以重用现有内存。在python中不能。我怀疑这次分配内存的时间是主要的区别,因为正如其他人所说的:OpenCV的底层代码是C++。
在将python抛出窗口之前:python的开发速度要快得多,如果您没有遇到硬件限制,或者如果开发速度比性能更重要,那么使用python。在我使用OpenCV的许多应用程序中,我已经在Python中开始,后来只将计算机视觉组件转换为C++(例如使用Python的cType模块并将CV代码编译成共享库)。
Python代码:import cv2
import time
FPS_SMOOTHING = 0.9
cap = cv2.VideoCapture(2)
fps = 0.