-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdst_camera.py
More file actions
36 lines (32 loc) · 1.04 KB
/
dst_camera.py
File metadata and controls
36 lines (32 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import cv2
import socket
import time
import Image
import StringIO
import numpy as np
# 注意IP地址和端口号与前面的程序中的保持一致
HOST, PORT = "192.168.0.113", 9999
# 连接到服务器
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
f = sock.makefile()
cv2.namedWindow("camera")
while True:
# 从服务器读取数据,一行的结尾是'\n',注意我们前面已经将每一帧数据的'\n'替换成'\-n',而结尾就是'\n'
msg = f.readline()
if not msg:
break
print len(msg), msg[-2]
# 将'\-n'换回来成'\n'
jpeg = msg.replace("\-n", "\n")
buf = StringIO.StringIO(jpeg[0:-1])# 缓存数据
buf.seek(0)
pi = Image.open(buf)# 使用PIL读取jpeg图像数据
# img = np.zeros((640, 480, 3), np.uint8)
img = cv2.cvtColor(np.asarray(pi), cv2.COLOR_RGB2BGR)# 从PIL的图像转成opencv支持的图像
buf.close()
cv2.imshow("camera", img)# 实时显示
if cv2.waitKey(10) == 27:
break
sock.close()
cv2.destroyAllWindows()