在不使用OpenCV的情况下对帧进行灰度处理的有效方法



我正在从我的网络相机捕捉Mat对象的实时视频。是他们在不使用任何API(如openCV…)的情况下将MAT对象转换为灰度图像帧的任何有效方法。。。我已经用openCV试过了。但我喜欢在c++中实现。。。他们有办法做到这一点吗?

我建议您使用OpenCV。OpenCV已经包含了用于在各种颜色空间之间转换(即,甚至在RGB(实际上是OpenCV的BGR)到灰度之间转换)的优化实现。

有关更多详细信息,请参阅:http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html.

OpenCV完全可以用C++实现。

如果你真的想实现你自己的教学目的(我看不出你有什么理由不这样做),那么简单的方法就是迭代Mat中的R G B值,并应用公式:

结果V值=0.299*R+0.587*G+0.14*B

(另请参阅堆栈溢出问题将RGB转换为灰度/强度,以获得关于为什么R G B分量通常会以不同方式加权的更详细讨论)

假设这里你想把RGB转换成灰色。对于其他颜色空间转换,请查看OpenCv文档,该文档还详细介绍了如何进行转换(请参阅上面提供的链接)。

更重要的是,OpenCV是开源的。这意味着,如果您想了解最佳实现的外观,可以下载源代码并进行查看。

Google告诉我,你必须平均每个像素的R、G和B值。这里讨论了的一些算法

http://www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale/

最简单的方法是将每种颜色的R、G和B值转换为平均值(R+G+B)/3。请查看上面的链接,了解几个不同平均值的结果。

最新更新