【QT】QT从零入门教程(十):图像RGB单通道提取

有了图像灰度化的基础后,实现RGB的大通道提取就简单多了。主要思想就是将图像要提取的通道原值赋给新图像,其余通道置0。这里仅给出蓝色通道提取的思路和示例代码,其他通道类似。

/***************************************
 Function: Channel::Blue(QString Path, QLabel *imgLabel)
 Description: 提取蓝色分量
 Called By: MainWindow::channelBlue()
 Input: 当前图像路径Path,图像显示框imgLabel
 Output: "提取蓝色分量"
 Return: 当前图像路径Path,图像显示框imgLabel
 Others: 提取通道赋原值,其余通道置0
***************************************/
void Channel::Blue(QString Path, QLabel *imgLabel)
{
    unsigned char *blueData;                                // 定义字符型指针数组blueData用于存储蓝色分量数据
    QImage img;
    img.load (Path);                                        // 加载当前图像
    QPixmap pixmap(QPixmap::fromImage (img));               // 转为Pixmap图
    imgLabel->setPixmap (pixmap);                           // 显示当前图像
    unsigned char *data = img.bits ();                      // 指向当前图像第一个像素
    int width = img.width ();                               // 图像宽度
    int height = img.height ();                             // 图像高度
    int bytePerLine = img.bytesPerLine();                   // 图像每行字节数
    blueData = new unsigned char [bytePerLine * height];    // 设置数组大小
    unsigned char blue = 0;                                 // 蓝色分量
    for (int i = 0; i < height; i++)                        // 遍历每一行
    {
        for ( int j = 0; j < width; j++ )                   // 遍历每一列
        {
            blue = *(data);                                 // 获取当前像素点蓝色分量
            blueData[i * bytePerLine + j * 3] = 0;
            blueData[i * bytePerLine + j * 3+1]=0;
            blueData[i * bytePerLine + j * 3+2]=blue;       // 蓝色通道赋原值
            data += 4;                                      // 更新至下一像素点
        }
    }

    QImage blueImage(blueData,width,height,bytePerLine,QImage::Format_RGB888);
    QPixmap pixmap2(QPixmap::fromImage (blueImage));        // 更新图像窗口
    imgLabel->setPixmap (pixmap2);                          // 显示灰度图像
    qDebug() << "提取蓝色分量";
}

原图:
【QT】QT从零入门教程(十):图像RGB单通道提取_第1张图片
蓝色通道提取结果:
【QT】QT从零入门教程(十):图像RGB单通道提取_第2张图片
持续更新~

你可能感兴趣的:(图像处理,Qt,RGB单通道提取,Qt)