この関数が行うように、RGB イメージをグレーに変換したいと思います。
Imgproc.cvtColor(mRgba, mGrey, Imgproc.COLOR_RGBA2GRAY);
しかし、openCV は特定の式 (0.299*R + 0.587*G + 0.114*BI だと思いますか?) を使用しており、代わりに min(R,G,B) を使用したいと考えています。
それを行うためのパフォーマンス効率の良い方法はありますか? (これはAndroid用のOpenCVなのでJavaで)
編集 :
これがプロファイリングです。これは間違いなく以前に行う必要がありました。
カメラをキャプチャする基本アプリケーションは 12 FPS で実行されます
- OpenCV の cvtColor() を使用: 12 FPS (速度の違いはわずかです)
- マーク・ミラーの答え: 1.5 FPS
- Mark Millerの回答とMikiの最適化(データポインターを1回取得):7 FPS
信じられないかもしれませんが、その小さな機能だけで FPS の半分のコストがかかります。このデバイスは、ORB のような非常に複雑なものをまともな速度 (3-4 FPS) で実行でき、すべての O(n) C++ ルーチンを FPS の違いなしで実行できます。また、ミキの「トリック」だけで、関数が10倍速くなります。