Python 嵌入式平台OpenCV的特征检测

Python 嵌入式平台OpenCV的特征检测,python,algorithm,opencv,raspberry-pi,computer-vision,Python,Algorithm,Opencv,Raspberry Pi,Computer Vision,我试图在嵌入式环境中进行对象识别,为此我使用了Raspberry Pi(特别是版本2) 我正在使用OpenCV库,现在我正在使用OpenCV中包含的特征检测算法 到目前为止,我尝试了不同的方法: 我尝试了不同的关键点提取和描述算法:SIFT、SURF、ORB。筛子和浪花太重,球体不太好 然后我尝试使用不同的算法提取关键点,然后进行描述。第一种方法是使用快速算法提取关键点,然后使用ORB或SURF进行描述,结果不好,也没有旋转不变性,然后我尝试混合其他方法 我现在已经到了一个地步,在时间允许的

我试图在嵌入式环境中进行对象识别,为此我使用了Raspberry Pi(特别是版本2)

我正在使用OpenCV库,现在我正在使用OpenCV中包含的特征检测算法

到目前为止,我尝试了不同的方法:

  • 我尝试了不同的关键点提取和描述算法:SIFT、SURF、ORB。筛子和浪花太重,球体不太好
  • 然后我尝试使用不同的算法提取关键点,然后进行描述。第一种方法是使用快速算法提取关键点,然后使用ORB或SURF进行描述,结果不好,也没有旋转不变性,然后我尝试混合其他方法
我现在已经到了一个地步,在时间允许的情况下,使用ORB进行关键点提取,使用SURF进行描述,可以获得最佳结果。但它仍然很慢

那么你有什么建议或新想法来获得更好的结果吗?我错过什么了吗


作为补充信息,我正在使用Python 3.5和OpenCV 3.1,我在硕士学位上也做过类似的项目

我使用了树莓皮3,因为它比皮2快,并且有更多的图像处理资源

我在OpenCV中使用了KNN算法进行数字检测。它速度快,效率高


KNN算法的主要优点是重量很轻。

我在硕士学位上做过类似的项目

我使用了树莓皮3,因为它比皮2快,并且有更多的图像处理资源

我在OpenCV中使用了KNN算法进行数字检测。它速度快,效率高


KNN算法的主要优点是重量非常轻。

定义您对“非常慢”的看法以及您的具体期望。(和现在一样,这需要X秒,但我预计只需要Y秒。)显示当前代码和一些示例输入。现在它正用于将对象图像(400x200)与从网络摄像头捕获的帧相匹配。我对太慢的定义是2fps,分辨率为640x400帧。我想让它达到每秒至少5-6 fps,以获得更流畅的视频流。您是否有一个大的标记对象数据集,以便识别?如果你这样做了,也许可以尝试使用viola jons进行物体检测。@AmitayNachmani我不太明白你所说的标签是什么意思,但这可能会很有趣。我对维奥拉-琼斯做了一些研究。你能详细说明一下吗,谢谢!您需要阅读有关基本机器学习的内容才能理解这些术语,但一般来说,您需要一组包含正在查找的对象的图像(标记为1),以及一组不包含正在查找的对象的图像(标记为0)。然后你运行机器学习算法,以viola jones为例,该算法将使用viola jones描述符学习图像中对象的表示。定义你对“非常慢”的感觉以及你的具体期望。(和现在一样,这需要X秒,但我预计只需要Y秒。)显示当前代码和一些示例输入。现在它正用于将对象图像(400x200)与从网络摄像头捕获的帧相匹配。我对太慢的定义是2fps,分辨率为640x400帧。我想让它达到每秒至少5-6 fps,以获得更流畅的视频流。您是否有一个大的标记对象数据集,以便识别?如果你这样做了,也许可以尝试使用viola jons进行物体检测。@AmitayNachmani我不太明白你所说的标签是什么意思,但这可能会很有趣。我对维奥拉-琼斯做了一些研究。你能详细说明一下吗,谢谢!您需要阅读有关基本机器学习的内容才能理解这些术语,但一般来说,您需要一组包含正在查找的对象的图像(标记为1),以及一组不包含正在查找的对象的图像(标记为0)。然后你运行你的机器学习算法,在你的例子中是viola jones,它将使用viola jones描述符学习图像中对象的表示。你是说在特征匹配阶段?你没有使用Bruteforce Matcher或Flann,而是使用KNN?是的,我说的是特征匹配阶段。你是说在特征匹配阶段?你没有使用Bruteforce Matcher或Flann,而是使用KNN?是的,我说的是特征匹配阶段。