이번 포스팅글은 opencv 모듈을 통한 스트리밍 환경을 구축한다.
진행방식은 소켓 통신을 이용하여 테스트를 진행한다.
# 환경
- 언어 : python 3.9.0
- 모듈 : opencv, socket
#웹캠 데이터 전송 예제(Client)
import socket
import cv2
UDP_IP = '127.0.0.1'
UDP_PORT = 9505
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
d = frame.flatten()
s = d.tostring()
for i in range(20):
sock.sendto(bytes([i]) + s[i*46080:(i+1)*46080], (UDP_IP, UDP_PORT))
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 웹켐 전송 대상지 예제(Server)
import socket
import numpy
import cv2
UDP_IP = "127.0.0.1"
UDP_PORT = 9505
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))
s = [b'\xff' * 46080 for x in range(20)]
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
out = cv2.VideoWriter('output.avi', fourcc, 25.0, (640, 480))
while True:
picture = b''
data, addr = sock.recvfrom(46081)
s[data[0]] = data[1:46081]
if data[0] == 19:
for i in range(20):
picture += s[i]
frame = numpy.fromstring(picture, dtype=numpy.uint8)
frame = frame.reshape(480, 640, 3)
cv2.imshow("frame", frame)
out.write(frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
'언어' 카테고리의 다른 글
GraphQL 개념이해 (0) | 2022.01.10 |
---|---|
[Python] OpenCV 모듈 활용 - 1 (0) | 2021.06.09 |
[Python] 큐싱(Qshing)이란? (0) | 2021.06.08 |