欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在树莓派4b上用opencv抓取来自esp32cam的视频流

程序员文章站 2022-07-12 10:54:55
...

已经弃坑了,但是过程还是保留一下
目标:用树莓派捕捉来自esp的视频流并进行人脸识别
条件:树莓派4b*1 esp32cam(aithinker) 杜邦若干
步骤:
关键就在于cv2.videoCapture可以抓本地视频文件,网内视频文件,以及其他奇奇怪怪的流协议,但就是抓不了http的视频流。多方测试下无果,选择将其看做一个web资源 转用urllib的get请求

在树莓派4b上用opencv抓取来自esp32cam的视频流
知道了传的是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:]

手动操作并重新编码
再次感谢两位大佬
在树莓派4b上用opencv抓取来自esp32cam的视频流在树莓派4b上用opencv抓取来自esp32cam的视频流