라즈베리파이3와 파이캠 스트리밍을 udp소켓통신으로 pc의 파이썬으로 영상을 전송하고 있습니다. 영상에 짤림 영상이 나타나는데 조언구합니다.
영상이 패킷손실때문인지 전송률 문제인지 영상이 잘려서 나옵니다. 영상의 속도는 0.3초 정도 딜레이가 있습니다.
첨부 이미지
라즈베리파이측의 클라이언트 소스입니다.
#import the necessary packages
from picamera.array import PiRGBArray
from picamera import PiCamera
import socket
import numpy
import time
import cv2
UDP_IP = '192.168.137.1'
UDP_PORT = 8080
cap = PiCamera()
cap.resolution = (640, 480)
cap.framerate = 32
rawCapture = PiRGBArray(cap, size=(640, 480))
def xrange(x):
return iter(range(x))
for frame in cap.capture_continuous(rawCapture, format="bgr", use_video_port=True):
image= frame.array
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
d = image.flatten()
s = d.tostring()
for i in xrange(20):
sock.sendto(s[i * 46080:(i + 1) * 46080], (UDP_IP, UDP_PORT))
key = cv2.waitKey(1) & 0xFF
rawCapture.truncate(0)
if key == ord("q"):
break
pc측의 서버 소스입니다.
import socket
import numpy
import time
import cv2
UDP_IP = "192.168.137.1"
UDP_PORT = 8080
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))
s=b''
while True:
data, addr = sock.recvfrom(46080)
s += data
if len(s) == (46080*20):
frame = numpy.fromstring (s,dtype=numpy.uint8)
frame = frame.reshape (480,640,3)
cv2.imshow('frame',frame)
s=b''
if cv2.waitKey(1) & 0xFF == ord ('q'):
break
영상 후 작업을해야하는데 이놈 때문에 진도가 안나갑니다ㅜ
첨부 | 파일 크기 |
---|---|
캡처.JPG | 48.34 KB |
댓글 달기