您的位置:首页 > 编程语言 > Qt开发

qt+opencv对两幅图片进行融合

2016-12-09 23:37 453 查看
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.

源代码:

[cpp] view plain copy

#include "widget.h"

#include "ui_widget.h"

#include "public.h"

Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

cvNamedWindow("jdh1",1);

cvNamedWindow("jdh2",1);

cvNamedWindow("jdh3",1);

src1 = cvLoadImage("test.jpg");

src2 = cvLoadImage("lena.jpg");

dst = cvLoadImage("test.jpg");

QString str;

str.setNum(src1->width);

ui->lineEdit->setText(str);

str.setNum(src1->height);

ui->lineEdit_2->setText(str);

str.setNum(src2->width);

ui->lineEdit_3->setText(str);

str.setNum(src2->height);

ui->lineEdit_4->setText(str);

}

Widget::~Widget()

{

delete ui;

cvReleaseImage(&src1);

cvReleaseImage(&src2);

cvReleaseImage(&dst);

cvDestroyAllWindows();

}

void Widget::on_pushButton_clicked()

{

bool ok;

double alpha,beta,temp;

int x,y,width,height;

temp = ui->lineEdit_7->text().toDouble(&ok);

if (ok)

{

alpha = temp;

}

else

{

alpha = 0.4;

}

cout << alpha << endl;

temp = ui->lineEdit_8->text().toDouble(&ok);

if (ok)

{

beta = temp;

}

else

{

beta = 0.6;

}

cout << beta << endl;

x= ui->lineEdit_5->text().toInt(&ok,10);

cout << x << endl;

y = ui->lineEdit_6->text().toInt(&ok,10);

cout << y << endl;

width = ui->lineEdit_9->text().toInt(&ok,10);

cout << width << endl;

height = ui->lineEdit_10->text().toInt(&ok,10);

cout << height << endl;

cvSetImageROI(src1,cvRect(x,y,width,height));

cvSetImageROI(src2,cvRect(x,y,width,height));

cvSetImageROI(dst,cvRect(x,y,width,height));

cvAddWeighted(src1,alpha,src2,beta,0.0,dst);

cvResetImageROI(src1);

cvResetImageROI(src2);

cvResetImageROI(dst);

cvShowImage("jdh1",src1);

cvShowImage("jdh2",src2);

cvShowImage("jdh3",dst);

}

效果图:


http://blog.csdn.net/jdh99/article/details/6401000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: