gpt4 book ai didi

python - python 和 opencv 中的快速组件标记

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:11 25 4
gpt4 key购买 nike

我正在执行 this paper 中的组件标记算法使用 python 和 opencv。它需要逐个像素地检查输入图像并执行所谓的轮廓跟踪子例程,以将标签分配给二值图像的 Blob 。

我设法让它运行起来,但它似乎很慢。分析代码表明访问像素的 for 循环似乎是瓶颈。一张 256px*256px 的图片大约需要 200ms。以下是我的大致做法:

for i in image.height:
for j in image.width:
p = image[i, j]
pa = image[i - 1, j]
pb = image[i + 1, j]
# etc...

其中“图像”是二进制 opencv 图像。

我想知道是否有一种更快的方法可以使它也可用于视频应用程序。对于相同的问题大小,我的目标是 40-50 毫秒的运行时间,以获得 20-25fps。 10-15fps 也可能是可以接受的(66-100ms 运行时间)。

非常感谢任何提示和想法。

最佳答案

Python 的最新 OpenCV 绑定(bind)返回 numpy 数据类型,这意味着您可以使用完整的 numpy 库。在 numpy 中循环遍历二维数组(带索引)通常使用 ndenumerate 来完成。 ,它应该至少提供一点加速(因为它是针对 N 维数组优化的单循环)。你可以看看 numpy vectorize这会产生更多的加速,但如果您需要数组的索引,那么 ndenumerate 就是您所需要的。

除此之外,您最好的选择可能是用 C 编写瓶颈操作。

更新

如果有帮助,我相信 scipy.ndimage.label 完全符合您的要求,甚至可能使用相同的算法。

关于python - python 和 opencv 中的快速组件标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com