树莓派/PC实现实时摄像头数据共享(Python—picamera)

上次实验使用Python—OpenCV实现,发现传输效果并不是很理想,接下来使用Python和picamera实现树莓派/PC实时摄像头数据共享,主要也可分为服务器和客户端两部分。

服务器(PC/树莓派)Demo如下:

  1. import numpy as np

  2. import cv2

  3. import socket

  4. class VideoStreamingTest(object):

  5. def __init__(self, host, port):

  6. self.server_socket = socket.socket()

  7. self.server_socket.bind((host, port))

  8. self.server_socket.listen(0)

  9. self.connection, self.client_address = self.server_socket.accept()

  10. self.connection = self.connection.makefile('rb')

  11. self.host_name = socket.gethostname()

  12. self.host_ip = socket.gethostbyname(self.host_name)

  13. self.streaming()

  14. def streaming(self):

  15. try:

  16. print("Host: ", self.host_name + ' ' + self.host_ip)

  17. print("Connection from: ", self.client_address)

  18. print("Streaming...")

  19. print("Press 'q' to exit")

  20. # need bytes here

  21. stream_bytes = b' '

  22. while True:

  23. stream_bytes += self.connection.read(1024)

  24. first = stream_bytes.find(b'\xff\xd8')

  25. last = stream_bytes.find(b'\xff\xd9')

  26. if first != -1 and last != -1:

  27. jpg = stream_bytes[first:last + 2]

  28. stream_bytes = stream_bytes[last + 2:]

  29. image = cv2.imdecode(np.frombuffer(jpg, dtype=np.uint8),

  30. cv2.IMREAD_COLOR)

  31. cv2.imshow('image', image)

  32. if cv2.waitKey(1) & 0xFF == ord('q'):

  33. break

  34. finally:

  35. self.connection.close()

  36. self.server_socket.close()

  37. if __name__ == '__main__':

  38. # host, port

  39. h, p = "192.168.0.4", 8000

  40. VideoStreamingTest(h, p)

。。。。。。。。。。。。。。。。。

版权原因,完整文章,请参考如下:树莓派/PC实现实时摄像头数据共享(Python—picamera)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值