码迷,mamicode.com
首页 > 编程语言 > 详细

树莓派用Python写几个简单程序5:用socket传图像

时间:2015-08-15 18:39:29      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

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

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

首先是服务器端 server.py:

import socket
import cv2
import numpy

address = (‘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 buf

conn, 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 socket
import cv2
import numpy

address = (‘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:
        break
sock.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。


树莓派用Python写几个简单程序5:用socket传图像

标签:

原文地址:http://my.oschina.net/RagingTyphoon/blog/492950

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!