基于PYNQ的网络视频采集和显示

基于PYNQ的网络视频采集和显示

连接图

以太网
Hdmi
PC
PYNQ
显示器

PYNQ端

功能:作为服务端,接受视频流,经过缩放后通过Hdmi out输出

from pynq.overlays.base import BaseOverlay
from pynq.lib.video import *
import socket
import time
import cv2 as cv
import numpy as np
base = BaseOverlay("base.bit")
# monitor configuration: 640*480 @ 60Hz
Mode = VideoMode(640,480,24)
hdmi_out = base.video.hdmi_out
hdmi_out.configure(Mode,PIXEL_BGR)
hdmi_out.start()

HOST = '192.168.2.99' # host ip
PORT = 1008 #端口号
BUFSIZ = 102400 #消息的最大长度
ADDR = (HOST,PORT)

tcpSerSock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(10)

while True:
    print('等待连接...')
    tcpCliSock, addr = tcpSerSock.accept()
    print('连接到:', addr)

    while True:
        temp = tcpCliSock.recv(BUFSIZ)
        if temp is not None:
            img_code = np.fromstring(temp,dtype='uint8')
            if img_code is None:
                continue
            img = cv.imdecode(img_code,1)
            if img is None:
                continue
            frame = cv.resize(img,(640,480))
            outframe = hdmi_out.newframe()
            outframe[0:480,0:640,:] = frame[0:480,0:640,:]
            hdmi_out.writeframe(outframe)
    tcpCliSock.close()
tcpSerSock.close()

PC端

功能:作为客户端,利用webcam采集视频,编码后利用Socket传递到PYNQ中

from socket import *
import cv2 as cv
import numpy as np
HOST = '192.168.2.99'
PORT = 1008
BUFSIZ =1024
ADDR = (HOST,PORT)
cam = cv.VideoCapture(0)
tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)
encode_param = [int(cv.IMWRITE_JPEG_QUALITY), 50]
while cam.isOpened():
     ret, img = cam.read()
     img_encode = cv.imencode('.jpg', img, encode_param)[1]
     data  = img_encode.tostring()
     tcpCliSock.send(data)
     cv.imshow('sent',img)
     sig = cv.waitKey(1)
     if sig is ord('q'):
          break
tcpCliSock.close()
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值