c++ - 将 QImage 转换为灰度

标签 c++ qt grayscale qimage

我有一个 QImage,我需要将它转换为灰度,然后用颜色在其上绘制。我找到了一个 allGray()isGrayScale() 函数来检查图像是否已经是灰度,但没有 toGrayScale() 或类似名称功能。

现在我正在使用这段代码,但它的性能不是很好:

for (int ii = 0; ii < image.width(); ii++) {
    for (int jj = 0; jj < image.height(); jj++) {
        int gray = qGray(image.pixel(ii, jj));
        image.setPixel(ii, jj, QColor(gray, gray, gray).rgb());
    }
}

在性能方面,将 QImage 转换为灰度图像的最佳方式是什么?

最佳答案

从 Qt 5.5 开始,您可以调用 QImage::convertToFormat()将 QImage 转换为灰度,如下所示:

QImage image = ...;
image.convertToFormat(QImage::Format_Grayscale8);

关于c++ - 将 QImage 转换为灰度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27949569/

相关文章:

c++ - 在 visual studio 中运行的主要方法不正确

C++ MinGW 共享库问题(仅限 Windows,适用于 Linux)?

linux - 如何构建在 Linux 上动态链接的 qt 应用程序(非共享库)

QT 使用共享访问打开文件

c - C语言读取并显示灰度图像。

ubuntu 16.04 屏幕变成灰度

python - 读取图像灰度opencv 3.0.0-dev

c++ - 在 Mac OS X 10.7.2 上用 C++ 编译基本的 CGAL 程序

c++ - 如何中止 C++ 程序并以状态 0 退出?

c++ - n维插值c++算法