OpenCV-Python实战(番外篇)——OpenCV、NumPy和Matplotlib直方图比较

本文对比了OpenCV、NumPy和Matplotlib在计算灰度和颜色直方图的性能。通过执行时间测试,发现OpenCV的hist()函数在计算速度上优于NumPy和Matplotlib,因此在追求效率时推荐使用OpenCV。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenCV-Python实战(番外篇)——OpenCV、NumPy和Matplotlib直方图比较

前言

《OpenCV-Python实战(7)——直方图详解(❤️万字长文,含大量示例❤️)》中,我们学习了使用 OpenCV 提供的 cv2.calcHist() 函数来计算直方图。此外,NumPyMatplotlib 同样也为创建直方图提供了类似的函数。出于提高性能目的,我们来比较这些函数,使用 OpenCVNumPyMatplotlib 创建直方图,然后测量每个直方图计算的执行时间并将结果绘制在图形中。

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

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

from timeit 
### OpenCV-Python OpenCV-Contrib-Python 的区别 OpenCV-Python 是计算机视觉库 OpenCV 针对 Python 编程语言的接口实现。此版本包含了核心功能模块,适用于大多数常见的图像处理计算机视觉任务。 对于更高级的功能需求,则引入了 `opencv-contrib-python` 这一扩展包。该软件包提供了额外算法支持工具,这些通常处于研究前沿或是尚未完全稳定的技术特性[^1]。 安装基础版 OpenCV 可通过命令行获取官方发布的稳定版本;而要获得贡献模块中的实验性附加特性,则需单独下载并安装 opencv_contrib 库文件[^2]: ```bash pip install opencv-python pip install opencv-contrib-python ``` 当两者都已成功安装后,在导入 cv2 模块时会自动加载来自 contrib 包内的所有可用函数与类定义。这使得开发者可以在项目中无缝利用社区维护的各种先进方法技术成果来解决复杂的应用场景问题[^3]。 #### 示例代码展示差异 下面是一个简单的例子展示了如何使用 SIFT 特征检测器——这是一个仅存在于 `opencv-contrib-python` 中的功能: ```python import numpy as np import cv2 as cv from matplotlib import pyplot as plt img = cv.imread('home.jpg') gray= cv.cvtColor(img,cv.COLOR_BGR2GRAY) # 创建SIFT对象 (需要contrib支持) sift = cv.SIFT_create() kp = sift.detect(gray,None) cv.drawKeypoints(gray,kp,img,flags=cv.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) plt.imshow(img),plt.show() ```
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盼小辉丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值