深圳专业做网站/seo结算系统

深圳专业做网站,seo结算系统,如何做网站的版块规划,国际新闻最新消息今天新闻大事件 中方QTOpenCV综合示例:图像混合(滑动条)1、代码:2、运行结果:0)Widget_op.ui (界面文件)设计: 1、代码: 1)opencv_imwrite_Q.pro 添加:…

QT+OpenCV综合示例:图像混合(滑动条)

    • 1、代码:
    • 2、运行结果:

0)Widget_op.ui (界面文件)设计:
在这里插入图片描述

1、代码:

1)opencv_imwrite_Q.pro 添加:

INCLUDEPATH+= D:\opencv-3.1.0\opencv\build\includewin32:CONFIG(release, debug|release): LIBS += -LD:/opencv-3.1.0/opencv/build/x64/vc12/lib/ -lopencv_world310
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/opencv-3.1.0/opencv/build/x64/vc12/lib/ -lopencv_world310d
else:unix: LIBS += -LD:/opencv-3.1.0/opencv/build/x64/vc12/lib/ -lopencv_world310INCLUDEPATH += D:/opencv-3.1.0/opencv/build/x64/vc12
DEPENDPATH += D:/opencv-3.1.0/opencv/build/x64/vc12

2)主函数 main.cpp 添加:

#include "Widget_c.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget_c w;w.show();return a.exec();
}

3)Widget_c.h (主窗口头文件)添加:

#ifndef WIDGET_C_H
#define WIDGET_C_H
#ifdef WIN32
#pragma execution_character_set("utf-8")
#endif
#pragma warning(disable:4819)
#include <QWidget>
#include <opencv2/opencv.hpp>
#include <QImage>
#include <QMouseEvent>
#include <QLabel>namespace Ui {
class Widget_c;
}class Widget_c : public QWidget
{Q_OBJECTpublic:explicit Widget_c(QWidget *parent = 0);~Widget_c();bool eventFilter(QObject *obj, QEvent *event);private slots:void on_horizontalSlider_valueChanged(int value);private:Ui::Widget_c *ui;cv::Mat g_srcImage1;cv::Mat g_srcImage2;cv::Mat g_dstImage;const int g_nMaxAlphaValue=100; //Alpha值的最大值private:QImage MatToQImage(const cv::Mat& mat);void display_MatInQT(QLabel* label,cv::Mat& mat);
};#endif // WIDGET_C_H

4)Widget_c.cpp (主窗口源文件)添加:

#include "Widget_c.h"
#include "ui_Widget_c.h"
#pragma warning(disable:4819)
#include <QMessageBox>
#include <QFileDialog>using namespace  cv;Widget_c::Widget_c(QWidget *parent) :QWidget(parent),ui(new Ui::Widget_c)
{ui->setupUi(this);this->setFixedSize(600,450);this->setWindowFlags(Qt::WindowCloseButtonHint |Qt::WindowMinimizeButtonHint );ui->label->installEventFilter(this);    //安装事件过滤器ui->label->setText(tr("点击加载图片..."));ui->label->setFont(QFont("微软雅黑",20,QFont::Bold,true));ui->label->setStyleSheet("color:blue; background-color:lightYellow;");  //文本颜色(前景色)//加载图像 (两图像的尺寸需相同)//g_srcImage1 = imread("F:/C++/2. OPENCV 3.1.0/Trackbar_QSlier/1.jpg");//g_srcImage2 = imread("F:/C++/2. OPENCV 3.1.0/Trackbar_QSlier/2.jpg");//设置滑动条控件的最小/大值ui->horizontalSlider->setMinimum(0);ui->horizontalSlider->setMaximum(100);ui->horizontalSlider->setEnabled(false);//ui->lineEdit->setText(tr("50 %"));
}Widget_c::~Widget_c()
{delete ui;
}//  MatToQImage 图像转换函数
QImage Widget_c::MatToQImage(const cv::Mat& mat)
{// 8-bits unsigned, NO. OF CHANNELS = 1if(mat.type() == CV_8UC1){QImage image(mat.cols, mat.rows, QImage::Format_Indexed8);// Set the color table (used to translate colour indexes to qRgb values)image.setColorCount(256);for(int i = 0; i < 256; i++){image.setColor(i, qRgb(i, i, i));}// Copy input Matuchar *pSrc = mat.data;for(int row = 0; row < mat.rows; row ++){uchar *pDest = image.scanLine(row);memcpy(pDest, pSrc, mat.cols);pSrc += mat.step;}return image;}// 8-bits unsigned, NO. OF CHANNELS = 3else if(mat.type() == CV_8UC3){// Copy input Matconst uchar *pSrc = (const uchar*)mat.data;// Create QImage with same dimensions as input MatQImage image(pSrc, mat.cols, mat.rows, (int)mat.step, QImage::Format_RGB888);return image.rgbSwapped();}else if(mat.type() == CV_8UC4){//qDebug() << "CV_8UC4";// Copy input Matconst uchar *pSrc = (const uchar*)mat.data;// Create QImage with same dimensions as input MatQImage image(pSrc, mat.cols, mat.rows, (int)mat.step, QImage::Format_ARGB32);return image.copy();}else{//qDebug() << "ERROR: Mat could not be converted to QImage.";return QImage();}}void Widget_c::display_MatInQT(QLabel* label,Mat&    mat)
{label->setPixmap(QPixmap::fromImage(MatToQImage(mat)).scaled(label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation));}//  滑动条处理函数 process function
void Widget_c::on_horizontalSlider_valueChanged(int value)
{if(g_srcImage1.data&&g_srcImage2.data){// 显示slider 值:QString str = QString("%1%2").arg(value).arg(" %");ui->lineEdit->setText(str);//求出当前alpha值相对于最大值的比例double g_dAlphaValue = (double)value / g_nMaxAlphaValue;//则beta值为1减去alpha值double g_dBetaValue = (1.0 - g_dAlphaValue);//	根据alpha和beta值进行线性混合(加权)// dst(I)=saturate(src1(I)∗alpha+src2(I)∗beta+gamma)addWeighted(g_srcImage1, g_dAlphaValue, g_srcImage2, g_dBetaValue, 0.0, g_dstImage);//imshow("show",g_dstImage);// 通过QT label 显示display_MatInQT(ui->label,g_dstImage);}else{QMessageBox::warning(this, tr("提示"),tr("未成功载入图片!"), QMessageBox::Ok);}}// 事件过滤器处理
bool Widget_c::eventFilter(QObject *obj, QEvent *event)
{if (obj == ui->label)//指定某个QLabel{if (event->type() == QEvent::MouseButtonPress) //鼠标点击{QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event); // 时间转换if(mouseEvent->button() == Qt::LeftButton){QStringList fileNames = QFileDialog::getOpenFileNames(this,tr("保存对话框"),"F:/C++/2. OPENCV 3.1.0/Trackbar_QSlier", tr("图片文件(*.png *.jpg *.jpeg *.bmp *.tif *.tiff);;所有文件(*)"));if(fileNames.length()==2) // 逐行显示文件路径名{g_srcImage1 = imread(fileNames[0].toLocal8Bit().data());g_srcImage2 = imread(fileNames[1].toLocal8Bit().data());if(g_srcImage1.data&&g_srcImage2.data){ui->horizontalSlider->setEnabled(true);}else{QMessageBox::warning(NULL,"警告","载入图片错误:请载入两张同类型、尺寸的图片!",QMessageBox::Yes);}ui->horizontalSlider->setValue(50);}else{QMessageBox::information(NULL,"提示","请载入两张同类型、尺寸的图片!",QMessageBox::Yes);}return true;}else{return false;}}else{return false;}}else{// pass the event on to the parent classreturn QWidget::eventFilter(obj, event);}
}

2、运行结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491150.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图说报告|智能技术群的“核聚变”推动智能+时代到来

来源&#xff1a;阿里研究院2019年政府工作报告正式提出了“智能”重要战略。5G、物联网、人工智能、数字孪生、云计算、边缘计算等智能技术群的融合与叠加就像“核聚变”&#xff0c;推动着万物互联迈向万物智能时代&#xff0c;进而带动了“智能”时代的到来&#xff0c;以智…

C++局部变量和全局变量的初始化

当局部变量被定义时&#xff0c;系统不会对其初始化&#xff0c;此时局部变量的初始值未定义&#xff0c;必须自行对其初始化。定义全局变量时&#xff0c;系统会自动初始化为下列值&#xff1a;

OpenCV学习笔记(十二):边缘检测:Canny(),Sobel(),Laplace(),Scharr滤波器

OpenCV学习笔记&#xff08;十二&#xff09;&#xff1a;边缘检测&#xff1a;Canny(),Sobel(),Laplace(),Scharr滤波器 1&#xff09;滤波&#xff1a;边缘检测的算法主要是基于图像强度的一阶和二阶导数&#xff0c;但导数通常对噪声很敏感&#xff0c;因此必须采用滤波器来…

微软转型里程碑:云计算收入首次超过Windows业务

来源&#xff1a;腾讯科技导语 微软云计算业务第二季度收入为114亿美元&#xff0c;实现了64%的营收增长&#xff0c;上年同期和上一季度的增幅分别为89%和73%。腾讯科技讯 据国外媒体报道&#xff0c;微软公司今日公布了二季度财报&#xff08;自然季度&#xff0c;下同&#…

OpenCV学习笔记(十三):霍夫变换:HoughLines(),HoughLinesP(),HoughCircles( )

OpenCV学习笔记&#xff08;十三&#xff09;&#xff1a;霍夫变换&#xff1a;HoughLines(),HoughLinesP(),HoughCircles( ) 1、霍夫线变换HoughLines() OpenCV支持三种不同的霍夫线变换&#xff0c;它们分别是&#xff1a; 1&#xff09;标准霍夫变换(Standard Hough Trans…

“如果没有IBM和其所提供的系统,我们就无法登上月球。”

来源&#xff1a;IBM中国“如果没有IBM和其所提供的系统&#xff0c;我们就无法登上月球。”——NASA飞行指挥官 Gena Kra1969年7月20日&#xff0c;就在距离阿姆斯特朗迈出“人类一大步”约122米的月球上空&#xff0c;登月舱里突然响起了刺耳的警报声。警报向NASA显示机载电脑…

C++有符号和无符号数的转换

本文转自&#xff1a;http://www.94cto.com/index/Article/content/id/59973.html 1.引例&#xff1a; 今天在做了一道关于有符号数和无符号数相互转换及其左移/右移的问题&#xff0c;被它们之间的转换原理和位移原理搞得头大了。真的很后悔本科的时候没有认真学习《计算机组成…

OpenCV学习笔记(十四):重映射:remap( )

OpenCV学习笔记&#xff08;十四&#xff09;&#xff1a;重映射&#xff1a;remap( ) 图像的坐标映射是通过原图像与目标图像之间建立一种映射关系&#xff0c;这种映射关系有两种&#xff0c;一种是计算原图像任意像素在映射后图像的坐标位置&#xff0c;另一种是计算变换后…

C++中setw()的用法

setw&#xff08;&#xff09; 用于控制输出之间的间隔 #include <iomanip> using std::setw;cout<<s<<setw(8)<<a<<endl; s和a之间有7个空格&#xff0c;cout<<s<<setw(8)<<a<<endl;的意思是s后面输出8个字符&#xf…

自动驾驶产业链全景图

来源&#xff1a;乐晴智库精选自动驾驶产业链构成:感知-决策-执行 三个层面从感知层面看&#xff0c;感知环境的激光雷达、毫米波雷达、摄像头、红外夜视和组合导航设备&#xff0c;感知车辆自身的包括压力传感器、流量传感器、陀螺仪及加速度传感器等传感器都属于感知层面的零…

OpenCV学习笔记(十五):图像仿射变换:warpAffine(),getRotationMatrix2D()

OpenCV学习笔记&#xff08;十五&#xff09;&#xff1a;图像仿射变换&#xff1a;warpAffine(),getRotationMatrix2D() 一个任意的仿射变换都能表示为乘以一个矩阵(线性变换)接着再加上一个向量(平移)的形式。 仿射变换&#xff08;Affine Transformation或 Affine Map&…

『科技』2019全球最有前景AI公司TOP100

来源&#xff1a;eet-china I 整理&#xff1a;弗锐达引言&#xff1a;硅谷最强智库之一的CB Insights发布AI 100 2019报告&#xff0c;在全球范围内评选出了100家“最有前景”的AI创业公司&#xff0c;其中中国公司有6家&#xff0c;分别是……日前&#xff0c;硅谷最强智库之…

《环球》杂志 :《人工智能的“大脑”》

《环球》杂志 &#xff08;2019年6月26日出版的第13期&#xff09;文章来源&#xff1a;《环球》杂志 &#xff08;2019年6月26日出版的第13期&#xff09;&#xff0c;原题《人工智能的“大脑”》作者&#xff1a;徐贵宝 中国信息通信研究院图片来源&#xff1a;网络编辑&…

人类首次登月50年后,这60家公司决心重返月球

来源&#xff1a; 资本实验室1969年7月20日&#xff0c;美国宇航员尼尔阿姆斯特朗在踏上月球的那一刻&#xff0c;发出了“这是个人的一小步&#xff0c;却是人类的一大步”的经典感慨。这句话既是对地球之外更广袤空间的由衷赞叹&#xff0c;也是对人类勇气与探索精神的坚定表…

OpenCV学习笔记(十六):直方图均衡化:equalizeHist()

OpenCV学习笔记&#xff08;十六&#xff09;&#xff1a;直方图均匀化&#xff1a;equalizeHist() 参考博客&#xff1a; 直方图均衡化的数学原理 直方图匹配的数学原理 直方图均衡化广泛应用于图像增强中&#xff1a; 直方图均衡化处理的“中心思想”是把原始图像的灰度直方…

PHP自学3——在html的table标签中显示用户提交表单

为了更好地显示用户提交表单&#xff0c;本节将在上一节的基础上将读取的用户表单显示在html的<table>标签中&#xff0c;这一节将用到和数组有关的知识。 本节代码将从外部文件&#xff08;.txt文件&#xff09;中读取信息于指定数组中&#xff0c;然后对逐条订单进行处…

《科学》封面特别报道:人类登月50年

来源&#xff1a;学术经纬50年前的今天&#xff0c;1969年7月20日&#xff0c;人类首次踏足地球以外的世界&#xff1a;阿波罗11号登月舱着陆月球表面。▲阿波罗11号的三位宇航员&#xff1a;踏足月球的尼尔阿姆斯特朗&#xff08;Neil Armstrong&#xff0c;左&#xff09;、巴…

图解JVM的Class文件格式(详细版)

了解JAVA的Class文件结构有助于掌握JAVA语言的底层运行机制&#xff0c;我在学习的过程中会不断的与ELF文件格式作对比&#xff08;当然他们的复杂程度、格式相去甚远&#xff0c;比如可执行ELF的符号表解析在静态链接阶段已经完成(除了动态链接库是在动态链接阶段完成)&#x…

OpenCV学习笔记(十七):查找并绘制轮廓:findContours(),drawContours(),approxPolyDP()

OpenCV学习笔记&#xff08;十七&#xff09;&#xff1a;查找并绘制轮廓&#xff1a;findContours() 1、findContours() 函数 该函数使用Suzuki85算法从二值图像中检索轮廓。轮廓线是一种用于形状分析、目标检测和识别的有效工具。 opencv轮廓检测之FindContours函数算法解释…