博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树莓派用Python写几个简单程序5:用socket传图像
阅读量:6182 次
发布时间:2019-06-21

本文共 1729 字,大约阅读时间需要 5 分钟。

hot3.png

使用socket 传递摄像头图像到pc。

确定安装好opencv和python后,确定自己作为服务器端设备ip:

首先是服务器端 server.py:

import socketimport cv2import numpyaddress = ('127.0.0.1', 8002)s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind(address)s.listen(True)def recvall(sock, count):    buf = b''    while count:        newbuf = sock.recv(count)        if not newbuf: return None        buf += newbuf        count -= len(newbuf)    return bufconn, addr = s.accept()while 1:    length = recvall(conn,16)    stringData = recvall(conn, int(length))    data = numpy.fromstring(stringData, dtype='uint8')    decimg=cv2.imdecode(data,1)    cv2.imshow('SERVER',decimg)    if cv2.waitKey(10) == 27:        break    s.close()cv2.destroyAllWindows()

然后是客户端 client.py:

import socketimport cv2import numpyaddress = ('127.0.0.1', 8002)sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.connect(address)capture = cv2.VideoCapture(0)ret, frame = capture.read()encode_param=[int(cv2.IMWRITE_JPEG_QUALITY),90]while ret:    result, imgencode = cv2.imencode('.jpg', frame, encode_param)    data = numpy.array(imgencode)    stringData = data.tostring()    sock.send( str(len(stringData)).ljust(16));    sock.send( stringData );    ret, frame = capture.read()    #decimg=cv2.imdecode(data,1)    #cv2.imshow('CLIENT',decimg)    if cv2.waitKey(10) == 27:        breaksock.close()cv2.destroyAllWindows()

调试过程出现下面这个问题,一般是ip不对,要把'127.0.0.1'改为服务器端的ip,

Traceback (most recent call last):

  File "client.py", line 12, in <module>
    sock.connect((TCP_IP, TCP_PORT))
  File "C:\Python27\lib\socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 10061]

若在window的cmd中可以ipconfig查看ip;

若在linux中可以ifconfig查看ip。

转载于:https://my.oschina.net/RagingTyphoon/blog/492950

你可能感兴趣的文章
在Ubuntu 16.04 / 17.10 / 18.04上安装Oracle Java JDK 11
查看>>
算法-无重复字符的最长子串
查看>>
直播、短视频平台如何选择合适的CDN?
查看>>
GO GC 垃圾回收机制
查看>>
高德地图上展示终端信息
查看>>
区块链学堂——公有链、私有链、联盟链、侧链、互联链
查看>>
恕我直言,你可能误解了微服务
查看>>
web前端性能优化总结
查看>>
玩转小程序转发——小程序探索
查看>>
【基础】小程序实现聊天气泡样式
查看>>
Docker入门(三)使用Docker Compose
查看>>
CDN知识详解
查看>>
Python爬虫:学了requests库和re库之后能做的事情
查看>>
天下无难试之HashMap面试刁难大全
查看>>
IP地址自动封与解封的shell脚本
查看>>
ubuntu 系统环境配置文件的区别
查看>>
精通visual c++指纹模式识别系统算法及实现
查看>>
博客园自定义页面风格设计 后续篇(页面设计模式及代码高亮 鼠标点击效果升级)...
查看>>
[知识盲点] 为function添加值为function的属性
查看>>
Emacs for Windows use TRAMP
查看>>