对Python+Numpy实时手势识别的好奇

2 投票
3 回答
943 浏览
提问于 2025-04-15 15:58

我刚和我的导师开完实验室会议,之前的代码是用Matlab写的,它是离线模式,不是实时模式。所以我决定把它转换成Python+Numpy(离线版本)。但是在会议上,我的导师提到了一个问题,就是实时识别的速度,这让我对用Python+Numpy来做这个项目的速度产生了疑问。或者用C语言会更好?我的项目是使用电子手套(有两个传感器)来获取实时数据并进行数据处理和识别。

3 个回答

0

你可以看看 OpenCV,它有一些适用于Python的库,比如ctypes-opencvopencv-cython;不过我自己没有用过这些库。
理想情况下,你希望能把一个运行速度很快的C语言内部循环和一个灵活的Python/Numpy算法结合起来。
顺便说一下,去谷歌搜索“opencv 手势识别”,会有6680个结果。

1

我觉得答案主要取决于三个方面:你在Matlab中的编程水平、你在Python/Numpy中的编程水平,以及你的算法。如果你能认真地把所有操作都转化为向量形式,并且善用库函数,那么Matlab和Python在处理数字方面都能很快。

如果你的Matlab代码已经写得很好了,我会很惊讶你在转到Numpy后能看到多大的性能提升,除非你能找到一些特别的写法来帮助你。你转到C语言后可能也不会有太大的好处。在这种情况下,你可能更应该把精力放在优化你的算法上。

如果你的Matlab代码写得不太好,你可以选择:1)写更好的Matlab代码,2)用好的Numpy代码重写,或者3)用C语言重写。

3

NumPy如果你遵循一些基本规则,速度会非常快。尽量避免使用Python的循环,而是尽可能使用NumPy提供的运算符。这个链接这个链接都是很好的入门资料。

看完这些后,不妨试着在Matlab和NumPy中写一些简单的代码,然后比较一下它们的性能。如果NumPy的表现不错,那就足以说服你的导师了,特别是当这段代码能代表你在项目中实际使用的算法时。

注意:你还应该确认一下你的算法确实适合实时识别。

撰写回答