지난 글에 이어서 이번에는 영상 속 프레임을 보내보는것에 대해 코드를 작성했고, 사용방법은 다음과 같다.
# Server.py
import pickle
import socket
import struct
import cv2
HOST = 'localhost'
PORT = 8089
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('소켓 생성')
s.bind((HOST, PORT))
s.listen(10)
conn, addr = s.accept()
data = b''
payload_size = struct.calcsize("L")
while True:
# 프레임 사이즈 측정
while len(data) < payload_size:
data += conn.recv(4096)
packed_msg_size = data[:payload_size]
data = data[payload_size:]
msg_size = struct.unpack("L", packed_msg_size)[0]
# 메시지 사이즈 기준으로 데이터 구성
while len(data) < msg_size:
data += conn.recv(4096)
frame_data = data[:msg_size]
data = data[msg_size:]
# 프레임 로드
frame = pickle.loads(frame_data)
# 창으로 나타내기
cv2.imshow('frame', frame)
cv2.waitKey(1)
# client.py
import cv2
import numpy as np
import socket
import sys
import pickle
import struct
# 비디오 경로 읽어오기
cap=cv2.VideoCapture("")
clientsocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
clientsocket.connect(('localhost',8089))
while True:
ret,frame=cap.read()
# 프레임 직렬화하여 전송준비
data = pickle.dumps(frame)
# 메시지 길이 측정
message_size = struct.pack("L", len(data))
# 데이터 전송
clientsocket.sendall(message_size + data)
'Programming > Python' 카테고리의 다른 글
파이썬 함수 사용법[간단] (0) | 2021.03.01 |
---|---|
파이썬 pass 와 continue 차이점 (0) | 2021.02.26 |
파이썬 copy(얕은복사, 깊은복사 복사기능) (0) | 2021.02.22 |
파이썬 리스트(insert, append, extends 추가기능) (0) | 2021.02.22 |
Socket 프로그래밍[간단 예제] (0) | 2020.12.27 |