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

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.

源代码:

#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); }  

 

效果图:

qt+opencv对两幅图片进行融合_第1张图片

你可能感兴趣的:(qt+opencv对两幅图片进行融合)