とあるカメラの映像をPython3で読み込みOpenCVで処理を行いたいと考えて試しています
Bufferに読んだ映像フレーム分をOpenCVのFrameに変換する方法がないかを模索しております。
知識不足で恐縮ですが、お分かりになる方がいらっしゃいましたらお願いいたします。
やりたいこと
python
1 picture = tcp_client.recv(DataLen)
上記で読み取ったpictureの変数の中身をOpenCVに1フレームとして取り込みたい
やったこと
以下のコードを含むPythonコードで取得したデータを標準出力に書き出しmplayerにリダイレクト
→ 映像を表示することができました
python
1 picture = tcp_client.recv(DataLen) 2 sys.stdout.buffer.write(picture) 3
python3 camera-receiver-mplayer.py 192.168.137.11 | mplayer -fps 10 -nosound -vc ffh264 -noidx -mc 0 -
試したこと
Python
1raw_image = picture 2image = np.frombuffer(raw_image, dtype=np.uint8) 3decoded = image 4cv2.VideoWriter_fourcc('H','2','6','4') 5cv2.namedWindow("recv",cv2.WINDOW_NORMAL) 6frame = cv2.imdecode(decoded, cv2.IMREAD_COLOR) 7cv2.imshow("recv", frame)
結果:失敗
OpenCVにフレームが渡せずサイズ認識ができていないように見える
OpenCV Error: Assertion failed (ssize.width > 0 && ssize.height > 0) in resize, file /build/opencv-XDqSFW/opencv-3.2.0+dfsg/modules/imgproc/src/imgwarp.cpp, line 3492