opencv 图片合并

  1. addWeighted(InputArray Src1, int alpth, InputArray Src2, int beta, InputArray dst);

alpth + beta = 1 权重(调节透明度)

当 alpth = 0, 显示Src2

cpp 复制代码
QString imgpath1 = "xxxxxxxx";
QString imgpath2 = "xxxxxxxxx";

Mat imgSrc1 = imread(imgpath1.toStdString());
Mat imgSrc2 = imread(imgpath2,toStdString());

Mat imgDst;
cvtColor(imgSrc1, imgSrc1, COLOR_BGR2RGB);
cvtColor(imgSrc2, imgSrc2, COLOR_BGR2RGB);

addWeighted(imgSrc1, 0.5, imgSrc2, 0.5, imgDst);


QImage myQimg = QImage((const unsigned char*)imgDst.data(), imgDst.cols, imgDst.rows, static_cast<int>(imgDst.step), QImage::Format_RGB888);

ui->lable->setPixmap(QPixmap::fromImage(myQimg.scaled(ui->lable0>size())));

blend.h

cpp 复制代码
#ifndef BLEND_H
#define BLEND_H

#include <QWidget>
#include <opencv2/opencv.hpp>

using namespace cv;
namespace Ui {
class Blend;
}

class Blend : public QWidget
{
    Q_OBJECT

public:
    explicit Blend(QWidget *parent = nullptr);
    ~Blend();

    void initMainWindow();
    void imgShow();
    void imgProc(double value);

private slots:
    void on_verticalSlider_valueChanged(int value);

private:
    Ui::Blend *ui;

    Mat myImg;
    QImage myQImg;

    Mat imgSrc2;
    Mat imgSrc1;
};

#endif // BLEND_H

blend.cpp

cpp 复制代码
#include "blend.h"
#include "ui_blend.h"

#include <QDebug>
Blend::Blend(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Blend)
{
    qDebug() << __func__;
    ui->setupUi(this);
    qDebug() << __func__ <<__LINE__;
    setFixedSize(682,474);

    initMainWindow();
}

Blend::~Blend()
{
    delete ui;
}

void Blend::initMainWindow()
{
    ui->label->resize(631,456);
    QString imgPath = R"(D:\new_share\016_opencv\OpencvBlend\2.jpg)";
    Mat img = imread(imgPath.toStdString());
    cvtColor(img,img,COLOR_BGR2RGB);
    myImg = img;
    myQImg = QImage((const unsigned char*)img.data, img.cols, img.rows, static_cast<int>(img.step), QImage::Format_RGB888).copy();

    imgSrc1 = myImg;

    QString img2 = R"(D:\new_share\016_opencv\OpencvBlend\1.webp)";
    imgSrc2 = imread(img2.toStdString());
    cvtColor(imgSrc2, imgSrc2, COLOR_BGR2RGB);

    imgShow();
}

void Blend::imgShow()
{
    ui->label->setPixmap(QPixmap::fromImage(myQImg.scaled(ui->label->size())));
}

void Blend::imgProc(double value)
{
    Mat imgDst;
    addWeighted(imgSrc2, value, imgSrc1, 1-value, 0, imgDst);

    myQImg = QImage((const unsigned char*)imgDst.data, imgDst.cols, imgDst.rows,static_cast<int>(imgDst.step), QImage::Format_RGB888).copy();
    imgShow();
}

void Blend::on_verticalSlider_valueChanged(int value)
{
    imgProc(value/100.0);
}

blend.ui

相关推荐
️学习的小王14 小时前
AI编码工具的安全陷阱:Copilot/Codex漏洞风险与防御实践
人工智能·安全·copilot
不服老的小黑哥14 小时前
AI 规范:模板工程方法论
人工智能
樊小肆14 小时前
DeepSeeker-Code源码导读12-Hooks四引擎
前端·人工智能·agent
叠层归一研究院14 小时前
螺旋时空:E框架的整合宇宙论
人工智能·经验分享·算法·机器学习·agi
LorryJovens14 小时前
【LAAP意识动力工程学】aris自述如何让Agent产生意识的关键
人工智能
ms365copilot14 小时前
Copilot分析销售收入变化、找出涨跌原因
大数据·人工智能·copilot
YOLO数据集集合14 小时前
煤炭质量目标检测数据集 、| 煤炭检测 工业视觉 质量分级 异物检测 煤炭异物8005期
人工智能·yolo·目标检测·计算机视觉·分类·煤炭检测数据集·异物数据集
躺柒15 小时前
读数据可视化16大规模多变量空间数据(下)
人工智能·信息可视化·可视化·数据可视化·空间·大数据分析
qq4078556015 小时前
中小五金建材贸易企业:进销存数字化要重点关注哪些环节?
人工智能·低代码·制造
HIT_Weston15 小时前
190、【Agent】【OpenCode】TuiThreadCmd(alias)
人工智能·agent·opencode