我有一个无线传感器节点,可以无线传输到与计算机相连的接收器。我使用此命令实时查看数据
5 = 1 + 1 + 1 + 1 + 1 --> X X X X X
5 = 2 + 1 + 1 + 1 --> XX X X X
5 = 3 + 1 + 1 --> XXX X X
5 = 2 + 2 + 1 --> XX XX X
5 = 4 + 1 --> XXXX X
5 = 3 + 2 --> XXX XX
5 = 5 --> XXXXX
我是Python的新手,但是我能够开发如下代码来捕获标准输出,并从连接到同一台计算机的相机拍摄帧。就是说,当接收到一个数据包(数据)时,将在该时间戳处捕获一个帧。
它运行正常,但运行缓慢。我以10 Hz的频率运行传感器(每0.1秒发送一次),但是代码以较低的速度运行。我知道那是因为我正在使用sudo stdbuf -o0 ./pip_sense.v2 l l | stdbuf -o0 grep -P "TX:03(376|004)
(我注释掉了这一部分,这有助于减少延迟)。而且,正如本post及其所说(据我所知)所讨论的那样,使用cv2.imwrite()
可以调用额外的shell进程,从而增加延迟。
另外,看着this,shell=True
似乎也造成了延误。第二个链接中提出了一个解决方案,但是我真的不明白如何修改它以适合我。
Popen()
感谢您的帮助
谢谢
答案 0 :(得分:0)
更新: 我从朋友那里得到了建议,并且奏效了。
在save_webcam函数之外(作为全局变量)调用cam = cv2.VideoCapture(-1)可以大大减少延迟。
在这种情况下,每次打开save_webcam ...时,相机将打开一次,然后将捕获图像,因此,打开和关闭相机会减慢该过程。
但是,我想进一步增强该程序,因为有时会卡住。因此,任何人都知道此post中的内容以及应该如何修改我的stdout部分,然后请在此处评论。我很欣赏这个。