c++ - 不使用 OpenCV 对帧进行灰度化的有效方法

标签 c++ image-processing

我正在从我的网络摄像头捕捉实时视频到 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 值并应用公式:

结果 Vlue = 0.299 * R + 0.587 * G + 0.114 * B

(另请参阅堆栈溢出问题 Converting RGB to grayscale/intensity,以更详细地讨论为什么 R G B 分量通常获得不同的权重)

假设您要将 RGB 转换为灰色。对于其他颜色空间转换,请查看 OpenCv 文档,其中还详细说明了转换是如何完成的(参见上面提供的链接)。

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

关于c++ - 不使用 OpenCV 对帧进行灰度化的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25814582/

相关文章:

c++ - 试图将矩阵(未就位)从一个 vector 旋转到另一个 vector

c++ - 未定义的引用 - portaudio

指向 char 变量的 C++ char 指针

c++ - 字符编码困惑!

matlab - 找到图像 : Matlab 一系列曲线的交点

python - 如何为普通 pgm 格式编写 PIL 图像过滤器?

javascript - 如何对透明图像进行逐像素碰撞测试?

c++ - 位掩码函数

image-processing - 如何将3 channel IplImage转换为8位?

python - 当我尝试对带有掩码的图像进行 bitwise_and 时,python 出现 OpenCV 错误