Raspberry PiのGPUを使って画像処理(フィルタ適用、透視変換、エッジ検出等)をしたい。
OpenCVを使えばいいんだけど、Raspberry Piには高性能なGPU(VideoCore4)があるということで、GPUでの画像処理を目指す。どうも、OpenGL ES2というものでできるらしい。
Raspberry PiでのOpenGLの使い方は、
Jun's Homepage ラズベリーパイ メモ
が参考になる。
OpenGL ES2(2) - まずは初期化 (2012/09/15)
で、OpenGLで画面に描画する場合の初期化が書かれている。
しかし、やりたいのは画面描画することではなく画像処理なんで、EGLの初期化ではなくて、画面ではなくて、オフスクリーンのバッファを指定したい。
本家Raspberry Piのフォーラムで、よいサンプルを見つけた。
Hardware 3D in a window demo
Xのウィンドウ内にOpenGLで描画するデモ。(これ自体も興味深い)
内部では、オフスクリーン専用にEGLを初期化して、そこに向けてOpenGLで描画して、描画結果をglReadPixelsで取り出して、XPutImageでXのウィンドウに画像として貼り付けている。
これを改変して、OpenGLで描画して、bmpで保存できるようになった。
(備忘録)Raspberry Piオフスクリーン用のEGLの初期化の流れ
・eglGetDisplay → eglInitialize → eglChooseConfig (通常の画面描画と同じ)
で、その後、普通は、eglCreateWindowSurfaceだが、その代わりに
・eglGetConfigAttrib → eglCreateGlobalImageBRCM → eglCreatePixmapSurface
となる。で、最後に、
・eglCreateContext → eglMakeCurrent (通常の画面描画と同じ)
これで、オフスクリーンでの描画ができた。
0 件のコメント:
コメントを投稿