在树莓派4b上用opencv抓取来自esp32cam的视频流
程序员文章站
2022-07-12 10:54:55
...
已经弃坑了,但是过程还是保留一下
目标:用树莓派捕捉来自esp的视频流并进行人脸识别
条件:树莓派4b*1 esp32cam(aithinker) 杜邦若干
步骤:
关键就在于cv2.videoCapture可以抓本地视频文件,网内视频文件,以及其他奇奇怪怪的流协议,但就是抓不了http的视频流。多方测试下无果,选择将其看做一个web资源 转用urllib的get请求
知道了传的是jpg就好办了
以下代码来自万能的群友,看来谷歌还是有用的:
stream = urllib.request.urlopen('***ur stream server ip***')
bytes = bytes()
while True:
bytes += stream.read(1024)
a = bytes.find(b'\xff\xd8')#起始标志
b = bytes.find(b'\xff\xd9')#结束标志
if a != -1 and b != -1 and b>a:
jpg = bytes[a:b+2]
bytes = bytes[b+2:]
bf = np.frombuffer(jpg, dtype=np.uint8)
i = cv2.imdecode(bf, cv2.IMREAD_COLOR)#这个i就可以拿去识别了
cv2.imshow('i', i)
if cv2.waitKey(1) == 27:
exit(0)
if b<a :
bytes=bytes[a:]
手动操作并重新编码
再次感谢两位大佬
上一篇: 备份脚本以及自动执行
下一篇: uboot.lds 链接文件分析