qt 图像组合 图像变灰度 图像透明(转)
Published on 2022-05-17 15:46 in 分类: Qt with 萧海~
分类: Qt

qt 图像组合 图像变灰度 图像透明(转)

    原文:https://editor.csdn.net/md?articleId=124823144
    图像处理一般都是在opencv/vtk/itk/halcon里做的,qt用来显示
    偶尔有很简单图像操作小需求,调用第三方库很麻烦,我这里记录下自己每次有需要临时写的
    单纯qt对像素的操作简单的图像处理

    只用qt实现彩色变灰度

    for (int i = 0; i < srcImage.width(); i++)
    {
    for (int j= 0; j < srcImage.height(); j++)
    {
    QRgb color = srcImage.pixel(i, j);
    int gray = qGray(color);
    srcImage.setPixel(i, j, qRgba(gray, gray, gray, qAlpha(color)));
    }
    }

    只用qt实现图像透明

    baseImage = baseImage.convertToFormat(QImage::Format_ARGB32);
    union myrgb {
    uint rgba;
    uchar rgba_bits[4];
    };
    myrgb *mybits = (myrgb *) baseImage.bits();
    qint32 len = baseImage.width() * baseImage.height();
    while (len -- > 0) {
    mybits->rgba_bits[0] = 0;
    mybits->rgba_bits[1] = 0;
    mybits->rgba_bits[2] = (mybits->rgba == 0xFF000000) ? 0 : 255;
    mybits->rgba_bits[3] = (mybits->rgba == 0xFF000000) ? 0 : 255;
    mybits++;
    }

    只用qt实现图像拼接

    QImage imageWithOverlay = QImage(overlayImage.size(),
    QImage::Format_ARGB32_Premultiplied);
    QPainter painter(&imageWithOverlay);
    painter.fillRect(overlayImage.rect(), Qt::transparent);
    painter.drawImage(0, 0, baseImage);
    painter.drawImage(0, 0, overlayImage);
    painter.end();
    overlayImage = imageWithOverlay;

    只用qt实现差值缩放图片

    full_screen->copy(x, y, w, h)
    .scaled(480, 480, Qt::KeepAspectRatio, Qt::SmoothTransformation)
    .save(file_path, "bmp");
    posted @   萧海~  阅读(285)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
    · 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
    · C#/.NET/.NET Core优秀项目和框架2025年2月简报
    · DeepSeek在M芯片Mac上本地化部署
    · 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
    历史上的今天:
    2021-05-17 C++多线程编程:同步之互斥量Mutex
    2021-05-17 C++多线程编程:同步之信号量 Semaphore
    2021-05-17 vs 解决方案加载失败,无法读取项目文件“xxx.vcxproj”
    点击右上角即可分享
    微信分享提示
    电磁波切换