Ağın iş akışı testi için eşler arası video akışı geliştiriyorum. İki eş arasındaki ağ düşük bit hızı transferini destekler.OpenCV MPEG Video Streaming
OpenCV kullanarak video akışı için basit bir python programı hazırladım.
Program, video karesini Webcam'ten yakalar ve JPEG'ye kodlar ve ardından byte-stream'e eş gönderir. İyi çalışıyor. Ama amacımla ilgili bir sorun var. Kodlanmış bir çerçevenin boyutu, daha düşük JPEG kalitesiyle kodlansa bile yaklaşık 5 Kbyte'dir.
Daha küçük kodlama sonuçları elde etmek ve daha iyi video kalitesi elde etmek için, H264 veya H263 gibi MPEG kodekleriyle kodlamayı kullanmaya çalışıyorum. Yakında kendimi zor durumda buldum. İnternet'te örnek yok.
Aşağıdaki kodları nasıl değiştirebilirim?
import cv2
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240)
success, image = cap.read()
quality = 20 # quality 0 to 100. default:95
ret, jpeg = cv2.imencode('.jpg', image, [int(cv2.IMWRITE_JPEG_QUALITY), quality])
# send(jpeg.tobytes())
Hangi çözünürlükte akıyorsunuz? Çoğu zaman jpeg alabileceğiniz en yüksek sıkıştırma ile ilgilidir. (5 kilobayt kare başına azdır) –
Çözünürlük 320x240'tır. Boyut, yukarıdaki kodda len (jpeg.tobytes()) şeklindedir. – Hill
Gri tonlama veya renk kullanıyor musunuz? Ayrıca ikili bir görüntü olarak gördünüz mü? (Ve sonra ikili görüntüyü gönderiyor musunuz?) Bkz. Http://answers.opencv.org/question/4423/how-to-create-a-binary-image-mat/ –