易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
Qt+OpenCV对两幅图片进行融合
Qt+OpenCV对两幅图片进行融合源代码:
#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);
}
效果图:
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图