# 一、写在前面
软件介绍:
> 首先介绍一下该软件,这是我在 QT图形界面编程 这门课程上完成的大作业,主要功能分为图像处理以及视频处理两大块。
**图像处理**包括:灰度化、均值滤波、边缘检测、伽马变换、旋转镜像、亮度调节、二值化、对比度,饱和度调节、色彩调节、图片保存、水印等。
**视频处理**包括:二值化、边缘检测、灰度化、平滑、局部马赛克、缩放等。
此外还进行了界面美化、中英翻译等。
需要说明的是,由于完成的比较仓促,很多代码存在格式、效率方面的问题,希望dalao们多多包涵~
>
环境:
> 软件使用的是**QT 5.12.2+QT Creator 4.8.2+win10**,QT5版本应该都可行,视频处理涉及到OpenCV,我使用的是**OpenCV4.0.1**版本。
关于环境的安装我参考的是这篇文章:[win10系统Qt5.12配置OpenCV4.0.1库教程暨Qt,OpenCV,Cmake详细下载安装教程(史上最全!)](https://blog.csdn.net/weixin_42322013/article/details/88808230),为我提供了非常大的帮助,非常感谢!!
为了避免出现各种各样奇怪的错误,建议使用和我相同的版本(安装opencv的时候真的踩了很多很多坑)!
# 二、成品展示
话不多说,先看看成品。
图片处理:
![图片处理](https://img-blog.csdnimg.cn/20210123165908623.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNzA2OTY5,size_16,color_FFFFFF,t_70)
视频处理:
![视频处理](https://img-blog.csdnimg.cn/20210123165908437.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNzA2OTY5,size_16,color_FFFFFF,t_70)
# 三、图像处理
## 1.灰度化
效果:![在这里插入图片描述](https://img-blog.csdnimg.cn/20210123171426581.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNzA2OTY5,size_16,color_FFFFFF,t_70#pic_center)
代码:
```cpp
//灰度化
QImage MainWindow::gray(QImage image){
QImage newImage =image.convertToFormat(QImage::Format_ARGB32);
QColor oldColor;
for(int y = 0; y < newImage.height(); y++)
{
for(int x = 0; x < newImage.width(); x++)
{
oldColor = QColor(image.pixel(x,y));
int average = (oldColor.red() + oldColor.green() + oldColor.blue()) / 3;
newImage.setPixel(x, y, qRgb(average, average, average));
}
}
return newImage;
}
```
## 2.均值滤波
效果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210123171807785.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNzA2OTY5,size_16,color_FFFFFF,t_70#pic_center)
代码:
```cpp
//均值滤波
QImage MainWindow::junzhi(QImage image){
int kernel [3][3] = {
{1,1,1},
{1,1,1},
{1,1,1}};
int sizeKernel = 3;
int sumKernel = 9;
QColor color;
for(int x = sizeKernel/2;x<image.width() - sizeKernel/2;x++)
{
for(int y= sizeKernel/2;y<image.height() - sizeKernel/2;y++)
{
int r = 0;
int g = 0;
int b = 0;
for(int i = -sizeKernel/2;i<=sizeKernel/2;i++)
{
for(int j = -sizeKernel/2;j<=sizeKernel/2;j++)
{
color = QColor(image.pixel(x+i,y+j));
r+=color.red()*kernel[sizeKernel/2+i][sizeKernel/2+j];
g+=color.green()*kernel[sizeKernel/2+i][sizeKernel/2+j];
b+=color.blue()*kernel[sizeKernel/2+i][sizeKernel/2+j];
}
}
r = qBound(0,r/sumKernel,255);
g = qBound(0,g/sumKernel,255);
b = qBound(0,b/sumKernel,255);
image.setPixel(x,y,qRgb( r,g,b));
}
}
return image;
}
```
## 3.边缘检测
效果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210123171956462.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNzA2OTY5,size_16,color_FFFFFF,t_70#pic_center)
代码:
```cpp
//边缘检测
QImage MainWindow::bianyuan(QImage image){
QImage newImage =image.convertToFormat(QImage::Format_ARGB32);
QColor color0;
QColor color1;
QColor color2;
QColor color3;
int r = 0;
int g = 0;
int b = 0;
int rgb = 0;
int r1 = 0;
int g1 = 0;
int b1 = 0;
int rgb1 = 0;
int a = 0;
for( int y = 0; y < image.height() - 1; y++)
{
for(int x = 0; x < image.width() - 1; x++)
{
color0 = QColor ( image.pixel(x,y));
color1 = QColor ( image.pixel(x + 1,y));
color2 = QColor ( image.pixel(x,y + 1));
color3 = QColor ( image.pixel(x + 1,y + 1));
r = abs(color0.red() - color3.red());
g = abs(color0.green() - color3.green());
b = abs(color0.blue() - color3.blue());
rgb = r + g + b;
r1 = abs(color1.red() - color2.red());
g1= abs(color1.green() - color2.green());
b1 = abs(color1.blue() - color2.blue());
rgb1 = r1 + g1 + b1;
a = rgb + rgb1;
a = a>255?255:a;
newImage.setPixel(x,y,qRgb(a,a,a));
}
}
return newImage;
}
```
## 4.伽马变换
效果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210123172207899.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNzA2OTY5,size_16,color_FFFFFF,t_70#pic_center)
代码:
```cpp
QImage MainWindow::gamma(QImage image){
double d=1.2;
QColor color;
int height = image.height();
int width = image.width();
for (int i=0;i<width;i++){
for(int j=0;j<height;j++){
color = QColor(image.pixel(i,j));
double r = color.red();
double g = color.green();
double b = color.blue();
int R = qBound(0,(int)qPow(r,d),255);
int G = qBound(0,(int)qPow(g,d),255);
int B = qBound(0,(int)qPow(b,d),255);
image.setPixel(i,j,qRgb(R,G,B));
}
}
return image;
}
```
## 5.亮度调节(槽函数)
代码:
```cpp
//亮度调节
void MainWindow::on_horizontalSlider_valueChanged(int value)
{
if(origin_path!=nullptr){ //origin_path需要换成你的图片路径
QImage image(origin_path);
int red, green, blue;
int pixels = image.width() * image.height();
unsigned int *data = (unsigned int *)image.bits();
for (int i = 0; i < pixels; ++i)
{
red= qRed(data[i])+ value;
red = (red < 0x00) ? 0x00 : (red > 0xff) ? 0xff : red;
green= qGreen(data[i]) + value;
green = (green < 0x00) ? 0x00 : (green > 0xff) ? 0xff : green;
blue= qBlue(data[i]) + value;
blue = (blue < 0x00) ? 0x00 : (blue > 0xff) ? 0xff : blue ;
data[i] = qRgba(red, green, blue, qAlpha(data[i]));
}
QImage Image=ImageCenter(image,ui->label_show);
ui->label_show->setPixmap(QPixmap::fromImage(Image));
ui->label_show->setAlignment(Qt::AlignCenter);
ui->label_light->setText(QString::number(value));
}
else{
QMessageBox::warning(nullptr, "提示", "请先选择一张图片!", QMessageBox::Yes | QMessageBox::Yes);
}
}
```
## 6.二值化(可变)(槽函数)
槽函数代码:
```cpp
//二值化滑动条
void MainWindow::on_horizontalSlider_erzhi_valueChanged(int value)
{
if(origin_path!=nullptr){
QImage image(origin_path);
QImage images=gray(image);
int height=images.height();
int width=images.width();
没有合适的资源?快使用搜索试试~ 我知道了~
QT图形界面编程课程设计大作业—堤坝灾害点检测智能预警系统.zip
共86个文件
png:40个
jpg:9个
cpp:7个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 151 浏览量
2022-07-07
21:40:15
上传
评论
收藏 12.03MB ZIP 举报
温馨提示
QT图形界面编程课程设计大作业—堤坝灾害点检测智能预警系统。这是在 QT图形界面编程 这门课程上完成的大作业,主要功能分为图像处理以及视频处理两大块。 图像处理包括:灰度化、均值滤波、边缘检测、伽马变换、旋转镜像、亮度调节、二值化、对比度,饱和度调节、色彩调节、图片保存、水印等。 视频处理包括:二值化、边缘检测、灰度化、平滑、局部马赛克、缩放等。 此外还进行了界面美化、中英翻译等。 QT图形界面编程课程设计大作业—堤坝灾害点检测智能预警系统。这是在 QT图形界面编程 这门课程上完成的大作业,主要功能分为图像处理以及视频处理两大块。 图像处理包括:灰度化、均值滤波、边缘检测、伽马变换、旋转镜像、亮度调节、二值化、对比度,饱和度调节、色彩调节、图片保存、水印等。 视频处理包括:二值化、边缘检测、灰度化、平滑、局部马赛克、缩放等。 此外还进行了界面美化、中英翻译等。
资源推荐
资源详情
资源评论
收起资源包目录
堤坝灾害点检测智能预警系统.zip (86个子文件)
dam-master
en_tr.ts 16KB
camera_recognition.ui 9KB
videosurface.cpp 2KB
opencv_ffmpeg2410.dll 9.27MB
images
handle2.png 1000B
help.png 633B
images.png 15KB
next.png 1KB
chuizhi.png 692B
2.jpg 324KB
苹果发布会开场极其舒适的宣传片.flv 2.7MB
about1.png 4KB
1.jpg 188KB
background.png 29KB
find.png 964B
prev.png 1022B
turn-left.png 866B
bianyuan.png 490B
zh-en.png 663B
junzhi.png 423B
1111.png 33KB
bg3.jpg 300KB
stop.png 1KB
turn-right.png 731B
filesaveas.png 1KB
right.png 199B
style.qss 49B
center.png 209B
gamma.png 387B
111.jpg 22KB
1.png 188KB
about.png 965B
cool-background1.png 124KB
filenew.bmp 2KB
22.jpg 39KB
handle.png 954B
1111.jpg 15KB
start.png 1KB
picture.png 589B
slide.png 192B
filesave.png 1KB
name1.png 3KB
bg.jpg 7KB
fuhe.png 826B
video.png 884B
images11.png 15KB
save.png 319B
zoom-in.png 1KB
signed_images.png 884B
left.png 184B
shuiping.png 749B
bg2.jpg 97KB
bg1.jpg 115KB
filenew.png 1KB
loading.gif 115KB
fileopen.png 854B
gray.png 971B
MainWindow.pro.user.d8d4e23.4.9-pre1 24KB
recognition.h 2KB
picture.ico 4KB
camera_recognition.cpp 48KB
zh_tr.qm 5KB
recognition.cpp 99KB
en_tr.qm 75B
camera_recognition.h 2KB
video.h 421B
videosurface.h 491B
LICENSE 9KB
MainWindow.pro.user.7e5f51a 24KB
.DS_Store 6KB
MainWindow.pro 2KB
tool.cpp 7KB
myimage.qrc 2KB
myico.ico 1KB
main.cpp 935B
mainwindow.ui 40KB
MainWindow.pro.user.4.8-pre1 23KB
video.cpp 2KB
mainwindow.cpp 57KB
mainwindow.h 4KB
zh_tr.ts 19KB
recognition.ui 8KB
README.md 28KB
opencv_ffmpeg2410_64.dll 9.27MB
MainWindow.pro.user 24KB
tool.h 320B
共 86 条
- 1
资源评论
- qq_587384002023-04-29资源内容总结的很到位,内容详实,很受用,学到了~
- weixin_70086792024-07-03资源内容详细全面,与描述一致,对我很有用,有一定的使用价值。
程序员张小妍
- 粉丝: 1w+
- 资源: 3252
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功