#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolButton>
#include <QApplication>
#include <QSpinBox>
#include <QTextEdit>
#include <QMdiSubWindow>
#include <QLabel>
#include <string>
using namespace std;
#include <iostream>
#include <sstream>
#include <QFontDialog>
#include <QColorDialog>
#include <QFileDialog>
#include <QMessageBox>
#include <QTranslator>
#include <QDebug>
#include <QPaintDevice>
#include <QPainter>
#include <QImage>
#include <QtCore/qmath.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
#include <QTimer>
#include "video.h"
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/types_c.h>
#include "opencv2/imgproc/imgproc_c.h"///for cvSmooth
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
, beishu(1)
,delay(0)
{
ui->setupUi(this);
ui->pushButton_3->setDisabled(true);
ui->pushButton_4->setDisabled(true);
//视频
//connect(ui->pushButton_5, SIGNAL(clicked()), this, SLOT(onBtnClicked()));
connect(&timer, SIGNAL(timeout()), this, SLOT(onTimeout()));
connect(&timer, SIGNAL(timeout()), this, SLOT(updatePosition()));
setWindowFlags(windowFlags()&~Qt::WindowMaximizeButtonHint); // 禁止最大化按钮
setFixedSize(this->width(),this->height()); // 禁止拖动窗口大小
customMsgBox.setWindowTitle(tr("关于本软件"));
customMsgBox.addButton(tr("好的"),QMessageBox::ActionRole);
customMsgBox.setIconPixmap(QPixmap(":/myImage/images/about1.png"));
customMsgBox.setText(tr("欢迎使用《多功能图像视频处理》软件!本软件具有简单的图像和视频处理功能。\n"
"图像功能包括多选打开、旋转、镜像、灰度化、均值滤波、"
"边缘检测、原图复合、伽马检测、二值化、色彩调整、亮度调整、对比度调整、饱和度调整等功能。\n"
"视频功能包括暂停、播放、进度条、灰度化、边缘检测、平滑、二值化、局部马赛克、缩放等功能。\n"
"——By fyf"));
ui->statusBar->showMessage(tr("欢迎使用多功能浏览器"),2000);
QLabel *permanent = new QLabel(this);
permanent->setObjectName("status");
permanent->setFrameStyle(QFrame::Box|QFrame::Sunken);
permanent->setText("欢迎使用!");
ui->statusBar->addPermanentWidget(permanent);
ui->tabWidget->setStyleSheet("QTabWidget:pane {border-top:0px;background: transparent; }");
}
MainWindow::~MainWindow()
{
delete ui;
capture.release();
}
void MainWindow::on_action_Dock_triggered()
{
ui->dockWidget->show();
}
void MainWindow::on_action_Open_triggered()
{
QStringList srcDirPathListS = QFileDialog::getOpenFileNames(this, tr("选择图片"), "E:/Qt/qtworks/MainWindow/images", tr("图像文件(*.jpg *.png *.bmp)"));
if(srcDirPathListS.size()>0)
{
ui->tabWidget->setCurrentIndex(0);
}
if(srcDirPathListS.size()>=3){
srcDirPathList =srcDirPathListS;
srcDirPathListS.clear();
index =0;
QString srcDirPath = srcDirPathList.at(index);
QImage image(srcDirPath);
QImage Image=ImageCenter(image,ui->label_show);
ui->label_show->setPixmap(QPixmap::fromImage(Image));
ui->label_show->setAlignment(Qt::AlignCenter);
origin_path=srcDirPath;
QImage images=ImageCenter(image,ui->label_other);
ui->label_other->setPixmap(QPixmap::fromImage(images));
ui->label_other->setAlignment(Qt::AlignCenter);
//状态栏显示图片路径
QLabel *label=ui->statusBar->findChild<QLabel *>("status");
label->setText(srcDirPath);
QString src1 = srcDirPathList.at((index+1)%srcDirPathList.size());
QImage image1(src1);
QImage Image1 = ImageCenter(image1,ui->label_other_1);
ui->label_other_1->setPixmap(QPixmap::fromImage(Image1));
ui->label_other_1->setAlignment(Qt::AlignCenter);
QString src2 = srcDirPathList.at((index+2)%srcDirPathList.size());
QImage image2(src2);
QImage Image2 = ImageCenter(image2,ui->label_other_3);
ui->label_other_3->setPixmap(QPixmap::fromImage(Image2));
ui->label_other_3->setAlignment(Qt::AlignCenter);
ui->pushButton_3->setDisabled(false);
ui->pushButton_4->setDisabled(false);
ui->label_other_1->setVisible(true);
ui->label_other_3->setVisible(true);
}else if(srcDirPathListS.size()==1){
srcDirPathList =srcDirPathListS;
srcDirPathListS.clear();
index =0;
QString srcDirPath = srcDirPathList.at(index);
QImage image(srcDirPath);
QImage Image=ImageCenter(image,ui->label_show);
ui->label_show->setPixmap(QPixmap::fromImage(Image));
ui->label_show->setAlignment(Qt::AlignCenter);
origin_path=srcDirPath;
QImage images=ImageCenter(image,ui->label_other);
ui->label_other->setPixmap(QPixmap::fromImage(images));
ui->label_other->setAlignment(Qt::AlignCenter);
//状态栏显示图片路径
QLabel *label=ui->statusBar->findChild<QLabel *>("status");
label->setText(srcDirPath);
//有图片触发事件
//isImage=true;
//qDebug("%d",srcDirPathList.size());
ui->pushButton_3->setDisabled(true);
ui->pushButton_4->setDisabled(true);
ui->label_other_3->setVisible(false);
ui->label_other_1->setVisible(false);
}
else if(srcDirPathListS.size()==2){
srcDirPathList =srcDirPathListS;
srcDirPathListS.clear();
index =0;
QString srcDirPath = srcDirPathList.at(index);
QImage image(srcDirPath);
QImage Image=ImageCenter(image,ui->label_show);
ui->label_show->setPixmap(QPixmap::fromImage(Image));
ui->label_show->setAlignment(Qt::AlignCenter);
origin_path=srcDirPath;
QImage images=ImageCenter(image,ui->label_other);
ui->label_other->setPixmap(QPixmap::fromImage(images));
ui->label_other->setAlignment(Qt::AlignCenter);
//状态栏显示图片路径
QLabel *label=ui->statusBar->findChild<QLabel *>("status");
label->setText(srcDirPath);
//有图片触发事件
//isImage=true;
//qDebug("%d",srcDirPathList.size());
QString src1 = srcDirPathList.at((index+1)%srcDirPathList.size());
QImage image1(src1);
QImage Image1 = ImageCenter(image1,ui->label_other_1);
ui->label_other_1->setPixmap(QPixmap::fromImage(Image1));
ui->label_other_1->setAlignment(Qt::AlignCenter);
ui->pushButton_3->setDisabled(false);
ui->pushButton_4->setDisabled(false);
ui->label_other_1->setVisible(true);
ui->label_other_3->setVisible(false);
}
}
void split(const string& s,vector<int>& sv,const char flag = ' ') {
sv.clear();
istringstream iss(s);
string temp;
while (getline(iss, temp, flag)) {
sv.push_back(stoi(temp));
}
return;
}
//图片居中显示,图片大小与label大小相适应
QImage MainWindow::ImageCenter(QImage qimage,QLabel *qLabel)
{
QImage image;
QSize imageSize = qimage.size();
QSize labelSize = qLabel->size();
double dWidthRatio = 1.0*imageSize.width() / labelSize.width();
double dHeightRatio = 1.0*imageSize.height() / labelSize.height();
if (dWidthRatio>dHeightRatio)
{
image = qimage.scaledToWidth(labelSize.widt
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
帖子链接:https://blog.csdn.net/qq_43706969/article/details/113057799 QT图形界面编程 大作业,主要功能分为图像处理以及视频处理两大块。 图像处理包括:灰度化、均值滤波、边缘检测、伽马变换、旋转镜像、亮度调节、二值化、对比度,饱和度调节、色彩调节、图片保存、水印等。 视频处理包括:二值化、边缘检测、灰度化、平滑、局部马赛克、缩放等。 此外还进行了界面美化、中英翻译等。 需要说明的是,由于完成的比较仓促,很多代码存在格式、效率方面的问题,希望dalao们多多包涵~ 软件使用的是QT 5.12.2+QT Creator 4.8.2+win10,QT5版本应该都可行,视频处理涉及到OpenCV,我使用的是OpenCV4.0.1版本。
资源详情
资源评论
资源推荐
收起资源包目录
Pic&Video.zip (69个子文件)
Pic&Video
MainWindow.pro 2KB
images
gray.png 971B
find.png 964B
turn-left.png 866B
1111.jpg 15KB
filenew.bmp 2KB
苹果发布会开场极其舒适的宣传片.flv 2.7MB
center.png 209B
slide.png 192B
right.png 199B
filesave.png 1KB
turn-right.png 731B
start.png 1KB
cool-background1.png 124KB
junzhi.png 423B
fuhe.png 826B
left.png 184B
about.png 965B
stop.png 1KB
style.qss 50B
handle.png 954B
help.png 633B
picture.png 589B
shuiping.png 749B
prev.png 1022B
name1.png 3KB
111.jpg 22KB
bg2.jpg 97KB
chuizhi.png 692B
filesaveas.png 1KB
filenew.png 1KB
about1.png 4KB
bg1.jpg 115KB
background.png 29KB
video.png 884B
zoom-in.png 1KB
bianyuan.png 490B
1.jpg 188KB
bg.jpg 7KB
handle2.png 1000B
22.jpg 39KB
bg3.jpg 300KB
loading.gif 115KB
save.png 319B
gamma.png 387B
fileopen.png 854B
zh-en.png 663B
2.jpg 324KB
next.png 1KB
zh_tr.qm 5KB
mainwindow.cpp.autosave 57KB
myimage.qrc 2KB
opencv_ffmpeg2410.dll 9.27MB
mainwindow.cpp 57KB
video.h 443B
MainWindow.pro.user 24KB
en_tr.ts 16KB
videosurface.cpp 2KB
myico.ico 1KB
mainwindow.h 4KB
videosurface.h 509B
MainWindow.pro.user.4.8-pre1 23KB
en_tr.qm 75B
opencv_ffmpeg2410_64.dll 9.27MB
zh_tr.ts 19KB
main.cpp 962B
mainwindow.ui 40KB
video.cpp 2KB
picture.ico 4KB
共 69 条
- 1
KyrieFeng
- 粉丝: 3464
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0