美文网首页
OpenCV、NumPy和Matplotlib直方图比较

OpenCV、NumPy和Matplotlib直方图比较

作者: Python百事通 | 来源:发表于2021-12-13 13:12 被阅读0次

    前言

    使用OpenCV提供的cv2.calcHist()函数可以用来计算直方图。此外,NumPy和Matplotlib同样也为创建直方图提供了类似的函数。出于提高性能目的,我们来比较这些函数,使用OpenCV、NumPy和Matplotlib创建直方图,然后测量每个直方图计算的执行时间并将结果绘制在图形中,比较不同库中计算直方图的不同效率。

    OpenCV、NumPy和Matplotlib灰度直方图比较

    使用timeit.default_timer测量执行时间,因为它会自动提供系统平台和Python版本上可用的最佳时钟,为了使用timeit.default_timer测量执行时间,首先需要将其导入:

    可以使用以下方法计算程序的执行时间:

    考虑到default_timer()测量值可能会受到同时运行的其他程序的影响。因此,获取准确计时的最佳方法是重复数次并使用最佳时间。当让,我们也可以采用其他方法来测量更加精确的时间,例如多次重复运行取平均值,或者其他更加有效避免异常的方法,在这里为了简单起见,我们重复数次并使用最佳时间。

    而为了计算和比较直方图,我们需要使用以下函数:

    1.OpenCV提供cv2.calcHist()函数

    2.NumPy提供的np.histogram()函数

    3.Matplotlib提供的plt.hist()函数

    用于计算上述每个函数的执行时间的代码如下所示。首先,导入所需库:

    然后编写可视化函数,在同一图中显示运行结果,进行更好的对比:

    接下来,就是程序的最关键部分了,使用不同库中计算直方图的方法,并获取程序运行时间:

    最后,我们绘制灰度图及其直方图:

    how_img_with_matplotlib(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2BGR),"gray",1)

    show_hist_with_matplotlib_gray(hist,"grayscale histogram (OpenCV)-"+str('% 6.2f ms'% exec_time_calc_hist),2,'m')

    show_hist_with_matplotlib_gray(hist_np,"grayscale histogram (Numpy)-"+str('% 6.2f ms'% exec_time_np_hist),3,'m')

    show_hist_with_matplotlib_gray(n,"grayscale histogram (Matplotlib)-"+str('% 6.2f ms'% exec_time_plt_hist),4,'m')

    plt.show()

    由上面实例可以看出,cv2.calcHist()的执行速度比np.histogram()和plt.hist()都快。因此,出于性能考虑,在计算图像直方图时可以使用OpenCV函数。

    相关文章

      网友评论

          本文标题:OpenCV、NumPy和Matplotlib直方图比较

          本文链接:https://www.haomeiwen.com/subject/xkklfrtx.html