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

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

源代码:

[cpp] view plain copy

  1. #include "widget.h"
  2. #include "ui_widget.h"
  3. #include "public.h"
  4. Widget::Widget(QWidget *parent) :
  5. QWidget(parent),
  6. ui(new Ui::Widget)
  7. {
  8. ui->setupUi(this);
  9. cvNamedWindow("jdh1",1);
  10. cvNamedWindow("jdh2",1);
  11. cvNamedWindow("jdh3",1);
  12. src1 = cvLoadImage("test.jpg");
  13. src2 = cvLoadImage("lena.jpg");
  14. dst = cvLoadImage("test.jpg");
  15. QString str;
  16. str.setNum(src1->width);
  17. ui->lineEdit->setText(str);
  18. str.setNum(src1->height);
  19. ui->lineEdit_2->setText(str);
  20. str.setNum(src2->width);
  21. ui->lineEdit_3->setText(str);
  22. str.setNum(src2->height);
  23. ui->lineEdit_4->setText(str);
  24. }
  25. Widget::~Widget()
  26. {
  27. delete ui;
  28. cvReleaseImage(&src1);
  29. cvReleaseImage(&src2);
  30. cvReleaseImage(&dst);
  31. cvDestroyAllWindows();
  32. }
  33. void Widget::on_pushButton_clicked()
  34. {
  35. bool ok;
  36. double alpha,beta,temp;
  37. int x,y,width,height;
  38. temp = ui->lineEdit_7->text().toDouble(&ok);
  39. if (ok)
  40. {
  41. alpha = temp;
  42. }
  43. else
  44. {
  45. alpha = 0.4;
  46. }
  47. cout << alpha << endl;
  48. temp = ui->lineEdit_8->text().toDouble(&ok);
  49. if (ok)
  50. {
  51. beta = temp;
  52. }
  53. else
  54. {
  55. beta = 0.6;
  56. }
  57. cout << beta << endl;
  58. x= ui->lineEdit_5->text().toInt(&ok,10);
  59. cout << x << endl;
  60. y = ui->lineEdit_6->text().toInt(&ok,10);
  61. cout << y << endl;
  62. width = ui->lineEdit_9->text().toInt(&ok,10);
  63. cout << width << endl;
  64. height = ui->lineEdit_10->text().toInt(&ok,10);
  65. cout << height << endl;
  66. cvSetImageROI(src1,cvRect(x,y,width,height));
  67. cvSetImageROI(src2,cvRect(x,y,width,height));
  68. cvSetImageROI(dst,cvRect(x,y,width,height));
  69. cvAddWeighted(src1,alpha,src2,beta,0.0,dst);
  70. cvResetImageROI(src1);
  71. cvResetImageROI(src2);
  72. cvResetImageROI(dst);
  73. cvShowImage("jdh1",src1);
  74. cvShowImage("jdh2",src2);
  75. cvShowImage("jdh3",dst);
  76. }

效果图:

http://blog.csdn.net/jdh99/article/details/6401000

时间: 2024-08-10 21:22:04

qt+opencv对两幅图片进行融合的相关文章

QT - OpenCV的安装与配置 (win7 64 bit + OpenCV3.0 + minGW32)

QT - OpenCV的安装与配置 想在QT中使用OpenCV来实现连续图片转成视频的功能,于是打上了OpenCV的主意 安装OpenCV的过程也是充满了曲折,但是最终还是安装成功了,现记录安装过程,以防系统重装后傻眼. 感谢以下前辈的分享: https://zahidhasan.wordpress.com/2014/08/19/qt-5-3-1-64-bit-mingw-windows/ http://www.tagwith.com/question_113329_opencv-3-0-vid

QT+opencv学习笔记一 opencv配置及Mat浅拷贝

今天终于把Qt + opencv配置成功了,中间有一些曲折,在这里记录一下. vs2013 + opencv的方法之前记录过,但这次的不太一样,我们一开始按照这篇文章配置pro Qt5中进行OpenCV开发教程 但是,死活出不来结果,研究发现,我们用的是 mingw 不是 vs,这个方法适合vs编译器 (具体可以参考:win7下的Qt环境+OpenCV视觉库) 后来,我们找到了这篇文章 QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置 但是还是有点曲折,

qt+opencv环境配置

本来是想用qtcreator+opencv,简单写几行代码,把opencv库加入qtcreator工程文件中编译, 发现报错,不识别类型之类的错误.(日常报错,接下来看怎么解决) 百度一下,发现是opencv2.4.x版本之后就不带mingw库, 而qtcreator使用的是mingw的编译链,于是乎又开始去下载opencv的源码.cmake.mingw32, 经过一顿操作之后,cmake生成了Makefile了!,以为要成功,结果编译到一半报错(吐槽一下 就那报错信息 真不知道是什么问题).

开始QT+OpenCV的学习

最近一个月,因为要做超声造影工具软件,所以开始接触OpenCV,而单独使用OpenCV的话,除了图像处理,其他功能都很弱,所以又开始学习MFC. 从原先的.net C#编程环境一下变成MFC还真有点不习惯,因为C++从学校出来后就没有再接触了,一直用C或C#,好在任何编程语言都是有通性的,何况C++本来就是C的升级,所以花了一两个星期恶补了一顿,总算有点感觉了,现在使用MFC编程没有了任何青涩感,也不用过分关注什么语言,什么环境,而是专心把功能实现好.软件的核心并不在你编程编的好不好,而是你能否

智能制造:两化深度融合大趋势

近日,工业和信息化部.科技部.中国科学院.中国工程院联合召开了以"创新驱动.制造未来"为主题的"2014智能制造国际会议".工业和信息化部部长苗圩作"推进信息化和工业化融合,打造中国制造业升级版"的主旨报告,从制造业新趋势.两化融合.创新驱动三个方面论述中国制造业升级路径.两院院士.中国机械工程学会荣誉理事长路甬祥发表了<智能制造--中国制造的未来>主旨演讲,中国工程院院长.中国机械工程学会理事长周济在<制造业数字化智能化与&q

opencv缩小两次寻找边界

核心函数:cvPyrDown,cvCanny 程序: #include "cv.h" #include "cxcore.h" #include "highgui.h" #include <iostream> #include "function.h" int FindBorder_Canny(int argc,char** argv) { IplImage* src=cvLoadImage("e:\\pi

matlab怎么同时显示imshow 两幅图片

matlab怎么同时显示imshow 两幅图片 matlab怎么同时显示imshow 两幅图片 方法一:subplot()函数 subplot(2,1,1); subplot(2,1,2); 分上下或者左右显示两张图片... 例如: 原始图片分两个窗口显示: hehe=uint8(hehe); figure(1) imshow(he), title('原始图像');%显示原始图像 figure(2) imshow(hehe), title('SLIC分割k=400,m=40');%显示超像素分割

开始QT+OpenCV学问

最近一个月.由于超声造影软件工具做.因此,开始接触OpenCV.使用OpenCV的话.除了图像处理,其它功能都非常弱.所以又開始学习MFC. 从原先的.net C#编程环境一下变成MFC还真有点不习惯,由于C++从学校出来后就没有再接触了,一直用C或C#.好在不论什么编程语言都是有通性的.何况C++本来就是C的升级.所以花了一两个星期恶补了一顿,总算有点感觉了,如今使用MFC编程没有了不论什么青涩感.也不用过分关注什么语言,什么环境,而是专心把功能实现好.软件的核心并不在你编程编的好不好,而是你

手写数字识别【QT+OpenCV】

[说明] 手写数字识别的实现方式很多. 本文尽量将其简化,以让大家能够快速了解怎样实现一个动起来的系统. [截图] [思路] 1.特征提取 将图像划分为5*5大小的区域,然后计算该区域内黑色(或白色)的像素点所占比例. 将需要测试的图像.用来分类的图像都进行特征提取. 2.计算当前的测试图像与用来分类的图像之间的欧氏距离. 3.找出欧式距离最小的值即为与当前测试图像最匹配的图像,即将该图像所代表的数字作为当前测试图像的结果. 4.为了处理上的方便,做了简化处理如下: 4.1仅仅选用10幅用来分类