我想像这个函数一样将 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 的优化(获取数据指针一次):7 FPS
这可能看起来令人难以置信,但只是这个小功能花费了 FPS 的一半。该设备还可以以不错的速度(3-4 FPS)运行非常复杂的东西,例如 ORB,并且所有 O(n) C++ 例程都没有 FPS 差异。也只是 Miki 的“技巧”使函数快了 10 倍。