質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

受付中

Python3で取得したH264フレームをOpenCVフレームに読み込みたい

SSaka
SSaka

総合スコア96

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2回答

0評価

0クリップ

1384閲覧

投稿2021/10/20 18:06

とあるカメラの映像をPython3で読み込みOpenCVで処理を行いたいと考えて試しています
Bufferに読んだ映像フレーム分をOpenCVのFrameに変換する方法がないかを模索しております。
知識不足で恐縮ですが、お分かりになる方がいらっしゃいましたらお願いいたします。

やりたいこと

python

picture = tcp_client.recv(DataLen)

上記で読み取ったpictureの変数の中身をOpenCVに1フレームとして取り込みたい

やったこと

以下のコードを含むPythonコードで取得したデータを標準出力に書き出しmplayerにリダイレクト
→ 映像を表示することができました

python

picture = tcp_client.recv(DataLen) sys.stdout.buffer.write(picture)
python3 camera-receiver-mplayer.py 192.168.137.11 | mplayer -fps 10 -nosound -vc ffh264 -noidx -mc 0 -

試したこと

Python

raw_image = picture image = np.frombuffer(raw_image, dtype=np.uint8) decoded = image cv2.VideoWriter_fourcc('H','2','6','4') cv2.namedWindow("recv",cv2.WINDOW_NORMAL) frame = cv2.imdecode(decoded, cv2.IMREAD_COLOR) cv2.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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

fourteenlength

2021/10/20 22:14

"cv2.VideoWriter_fourcc"は保存する時の道具なので、表示する時には別の方法でないといけないと思います。 http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_gui/py_video_display/py_video_display.html print(type(image )) print(image.shape) の結果を教えてもらえますか? もしNumpy arrayかつ、(320,240,3)のような回答であれば、 cv2.imshow("recv", image ) cv2.waitKey(0) でそのまま表示できるはずです。
SSaka

2021/10/21 14:09 編集

コメントありがとうございます fourteenlengthさん print(type(image )) <class 'numpy.ndarray'> print(image.shape) (22660,) となっています。 jbpb0さん カメラはURLアクセス不可のため、ある一定周期でフレームのみを取得する仕様になっています。 フレーム自体はH264エンコードされています。
jbpb0

2021/10/21 14:23

> フレーム自体はH264エンコードされています。 それならやはり、デコードして生動画データにしてからOpenCVに渡すのだと思います 私が前のコメントで紹介した方法以外にも、ググったらPythonでh264のデコードができるものがいくつか見つかるので、そういうもののどれかを使って
SSaka

2021/10/26 17:52

ありがとうございます。 ありがとうございます。 HWがJetsonなので、ここでH264decodeをさせてからOpenCVに渡す方法を検討しようと 現在H264decodeをチャレンジ中です。 まだコマンドがうまく扱えて居なくチャレンジ継続しています。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。