カメラデバイスから画像を受け取り、GTKウィンドウに表示するアプリケーションを開発しています。C、GTK:60fps以下のRGB画像の表示ストリーム
カメラはさまざまなフレームレート(1〜50 fps)で生のRGB画像(ピクセルあたり3バイト、アルファチャンネルなし、固定サイズ)を配信します。
私はすでにそのハードウェアをすべて完了しており、カメラでキャプチャされたすべての新しい画像で呼び出されるコールバック関数を持っています。
これらの画像を私のウィンドウに表示するには、最も簡単で高速ですが、どのような方法がありますか?
は、ここで私はすでに試したものです:
描画領域GTKに
gdk_draw_rgb_image()
を使用して:基本的には、働いていたが、描画処理が重なったことをとても遅いレンダリングされ、アプリケーションは最初の数フレーム後に墜落しました1 fpsのキャプチャレートでさえも。それぞれの新しいフレームのためGdkPixbufのを割り当てるとGTKの画像ウィジェットに
gtk_image_set_from_pixbuf()
を呼び出すには:最初のフレームのみを表示し、その後、私は、ウィンドウに変化は見られません。私のコードのバグかもしれませんが、それが十分に速いかどうかはわかりません。 カイロ(cairo_set_source_surface()
、その後、cairo_paint()
)を使用しては:画像フォーマットに対応している場合はかなり速いように見えたが、画像が縞模様に見えた、分かりません。
現在、私はgstreamerのような何かをしようとすると、ビデオストリームのようにこれらの画像を処理することを考えているが、私は、これは私の単純なメカニズムのためにやり過ぎのようなものであるかどうかはわかりません。
アドバイスを事前にいただきありがとうございます!
カイロは、32ビットワードでCAIRO_FORMAT_RGB24イメージサーフェスピクセルを定義しているため、リトルエンディアンマシンのメモリでは、ピクセルはBGR0BGR0になります。おそらく逆を使用しているか、0バイトを入れていません。ストリッピング。 – ergosys
@lynix同じことをコード化する必要があります。ウェブカメラのフィードを取得する方法をカイロに教えてもらえますか? – inckka
@inckka:それ以来4年経ちましたが、あなたの質問は誰もあなたに正確な答えを与えるにはあまりにも一般的です。私の具体的な問題は解決されました(この方法ではhttp://pastebin.com/QMCgaaUT)。 – lynix