Python SJ4000&x2B;OpenCV+;用于图像处理的树莓皮

Python SJ4000&x2B;OpenCV+;用于图像处理的树莓皮,python,opencv,image-processing,raspberry-pi,computer-vision,Python,Opencv,Image Processing,Raspberry Pi,Computer Vision,我正在研究使用SJ4000摄像头进行图像处理,该摄像头通过USB连接到Raspberry Pi(运行Raspbian Jessie),以便在Python中使用OpenCV进行图像处理。我已经在使用网络摄像头方面取得了相当大的成就,但现在需要将其移植到SJ4000的环境中,但我仍然面临着这个障碍 我使用的代码与此问题的答案相同: 在我笔记本电脑的网络摄像头上,我得到了一个相当好的帧率。当SJ4000也通过USB连接到我的笔记本电脑时,我获得了良好的帧速率。然而,在Raspberry Pi上,当我执

我正在研究使用SJ4000摄像头进行图像处理,该摄像头通过USB连接到Raspberry Pi(运行Raspbian Jessie),以便在Python中使用OpenCV进行图像处理。我已经在使用网络摄像头方面取得了相当大的成就,但现在需要将其移植到SJ4000的环境中,但我仍然面临着这个障碍

我使用的代码与此问题的答案相同:

在我笔记本电脑的网络摄像头上,我得到了一个相当好的帧率。当SJ4000也通过USB连接到我的笔记本电脑时,我获得了良好的帧速率。然而,在Raspberry Pi上,当我执行相同的代码时,图像由于某种原因被冻结。然后,我需要强制退出视频查看器窗口,该窗口显示为简单冻结

编辑1:关闭Spyder IDE并再次加载几次后,执行相同的代码,我可以看到一个提要,但帧速率非常低(每帧2-3秒),过一段时间它就会冻结

编辑2:我做了进一步的测试,发现当我包含人脸检测代码时,显示提要需要很长时间,因为有10秒延迟。当我在没有任何处理的情况下实时转发提要时,它的响应速度非常快

我该怎么解决这个问题?是获得更强大处理器的唯一途径吗


谢谢你的帮助

正如其他人所说,使用HOG/Haar描述符进行人脸检测在计算上非常昂贵。你将无法在覆盆子Pi上进行实时人脸检测。在我的Raspberry Pi 3上,我可以在300x300图像上以大约5 fps的速度进行人体检测

我的建议是:做运动检测。检测到运动后,开始人脸检测


进一步的优化可以通过在自己的线程中运行人脸检测来完成,如果在一个帧中检测到运动,则让运动检测提供一个FIFO帧供人脸检测器分析。这样,您的人脸检测器就可以异步运行,而不会占用捕获视频帧和执行运动检测的主线程。

正如其他人所说,使用HOG/Haar描述符进行人脸检测在计算上非常昂贵。你将无法在覆盆子Pi上进行实时人脸检测。在我的Raspberry Pi 3上,我可以在300x300图像上以大约5 fps的速度进行人体检测

我的建议是:做运动检测。检测到运动后,开始人脸检测


进一步的优化可以通过在自己的线程中运行人脸检测来完成,如果在一个帧中检测到运动,则让运动检测提供一个FIFO帧供人脸检测器分析。这样,您的人脸检测器就可以异步运行,而不会占用捕获视频帧和执行运动检测的主线程。

首先尝试视频馈送而不进行处理。。。。顺便问一下,您强制使用的分辨率颜色深度/编码和比特率是多少?我不使用Raspberry pi,但我打赌USB带宽受CPU限制(无DMA)。如果feed运行良好,请尝试估计剩余的计算能力。。。。你不能超过它,否则它会造成瓶颈,导致严重的减速和冻结。因此,如果你有一些fps,那么
T=1/fps
就是你的时间段。意味着它从CPU中实际花费了多少时间。。。因此,如果10%,那么你得到的
T
少于90%,并且必须适应……如果你选择了不好的分辨率/编码,那么甚至需要95%的T才能从相机抓取图像。。。你必须适应内部带宽too@Spektre-我在没有加工的情况下尝试过,而且喂料非常平滑。有没有办法限制我每秒处理的帧数?尽可能优化。。。在加工前裁剪出饲料中不必要的部分,以便于检测,如果可以,则降低分辨率等。。。首先,您需要检测瓶颈到底是什么。。。(试着一步一步地快速移动检测代码的一部分,并测量它们实际计算所需的时间(fps是不够的,因为它涉及到许多其他事情,而仅仅是原始CPU功率)。此外,Python听起来不像是性能提升。首先尝试不进行处理的视频馈送…顺便问一下,您强制使用的分辨率颜色深度/编码和比特率是多少?我不使用Raspberry pi,但我打赌USB带宽受CPU限制(无DMA)。如果feed运行良好,请尝试估计剩余的计算能力…你不能超过它,否则它将造成瓶颈,导致严重的减速和冻结。因此,如果你有一些fps,那么
T=1/fps
是你的时间段。衡量它实际从CPU占用的时间…如果10%,那么你得到的
T
90%而且必须适应……如果你选择了糟糕的分辨率/编码,那么仅仅从相机抓取图像就需要95%的时间……你必须适应带宽too@Spektre-我在没有处理的情况下尝试过,进纸非常平滑。有没有办法限制我每秒处理的帧数?优化您可以…裁剪出不必要的内容在处理前搜索部分提要,以简化检测,如果可以的话,降低分辨率等…首先,你需要检测瓶颈到底是什么…(尝试一步一步地快速删除检测代码的部分,并测量时间…他们实际计算所用的时间)(fps是不够的,因为它涉及到许多其他方面,而仅仅是原始CPU能力)。此外,Python听起来并不像是性能提升。