首页 > 解决方案 > Qt5 C++ - 如何在不使用 OpenCV 的情况下有效地将彩色图像拆分为 3 个通道

问题描述

我通过循环每个像素成功地从彩色图像中提取了 3 个通道。但是,这太慢了,想请问其他更有效,更快的方法吗?

以下是我的低效方法:

for (int y = 0; y < HEIGHT; ++y)
{
    int x_stride = y * WIDTH;
    for (int x = 0; x < WIDTH; ++x)
    {
        int index = x_stride + x;
        QRgb rgb_1 = snap_buf_1.pixel(x, y);

        img_bit_red = qRed(rgb_1);
        img_bit_green = qGreen(rgb_1);
        img_bit_blue = qBlue(rgb_1);

        ucSnapBuffer1[0].GetBuffer_UNSAFE().data()[index] = img_bit_red;
        ucSnapBuffer1[1].GetBuffer_UNSAFE().data()[index] = img_bit_green;
        ucSnapBuffer1[2].GetBuffer_UNSAFE().data()[index] = img_bit_blue;
    }
}

标签: imagecolorsrgb

解决方案


推荐阅读