<<<<<<< HEAD
# 堤坝灾害点检测智能预警系统
# 一、写在前面
软件介绍:
> 主要功能分为图像处理,视频处理以及堤坝渗水点识别三大块。
**图像处理**包括:灰度化、均值滤波、边缘检测、伽马变换、旋转镜像、亮度调节、二值化、对比度,饱和度调节、色彩调节、图片保存、水印等。
**视频处理**包括:二值化、边缘检测、灰度化、平滑、局部马赛克、缩放等。
**堤坝渗水点识别**主要包括可将光图像识别以及红外图像识别。
此外还进行了界面美化、中英翻译等。
>
环境:
> 软件使用的是**QT 5.12.3+QT Creator 4.9.0+win10**,视频处理涉及到OpenCV,我使用的是**OpenCV4.5.3**版本。
关于环境的安装请参考我写的这篇文章 https://editor.csdn.net/md/?articleId=119918183
为了避免出现各种各样奇怪的错误,建议使用和我相同的版本!
# 二、成品展示
图片处理:
![图片处理](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();
int bt;
QColor oldColor;
for (int i = 0; i < height; ++i)
{
for(int j=0;j<width;++j){
没有合适的资源?快使用搜索试试~ 我知道了~
基于可见光图像与红外图像实现对堤坝渗水点的检测C++源码+文档说明+安装教程+图片演示
共85个文件
png:40个
jpg:9个
cpp:7个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 183 浏览量
2024-04-30
03:12:23
上传
评论
收藏 9.48MB ZIP 举报
温馨提示
<项目介绍> 堤坝灾害点检测智能预警系统 一、写在前面 软件介绍: 主要功能分为图像处理,视频处理以及堤坝渗水点识别三大块。 图像处理包括:灰度化、均值滤波、边缘检测、伽马变换、旋转镜像、亮度调节、二值化、对比度,饱和度调节、色彩调节、图片保存、水印等。 视频处理包括:二值化、边缘检测、灰度化、平滑、局部马赛克、缩放等。 堤坝渗水点识别主要包括可将光图像识别以及 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论
收起资源包目录
dam-master.zip (85个子文件)
dam-master
MainWindow.pro.user.4.8-pre1 23KB
.DS_Store 6KB
camera_recognition.h 2KB
recognition.cpp 101KB
mainwindow.h 4KB
tool.h 320B
videosurface.h 491B
en_tr.ts 16KB
video.cpp 2KB
recognition.h 2KB
LICENSE 9KB
mainwindow.cpp 57KB
zh_tr.qm 5KB
recognition.ui 8KB
videosurface.cpp 2KB
MainWindow.pro.user 24KB
main.cpp 935B
mainwindow.ui 40KB
opencv_ffmpeg2410.dll 9.27MB
myimage.qrc 2KB
video.h 421B
camera_recognition.ui 9KB
MainWindow.pro.user.d8d4e23.4.9-pre1 24KB
picture.ico 4KB
myico.ico 1KB
images
fuhe.png 826B
stop.png 1KB
2.jpg 324KB
name1.png 3KB
signed_images.png 884B
fileopen.png 854B
prev.png 1022B
bianyuan.png 490B
style.qss 49B
filesave.png 1KB
22.jpg 39KB
loading.gif 115KB
handle2.png 1000B
1.jpg 188KB
filenew.png 1KB
shuiping.png 749B
bg1.jpg 115KB
filesaveas.png 1KB
1.png 188KB
images.png 15KB
about.png 965B
help.png 633B
next.png 1KB
1111.jpg 15KB
left.png 184B
images11.png 15KB
filenew.bmp 2KB
find.png 964B
bg.jpg 7KB
cool-background1.png 124KB
turn-right.png 731B
background.png 29KB
zh-en.png 663B
1111.png 33KB
zoom-in.png 1KB
slide.png 192B
video.png 884B
start.png 1KB
bg3.jpg 300KB
chuizhi.png 692B
right.png 199B
gray.png 971B
bg2.jpg 97KB
turn-left.png 866B
junzhi.png 423B
save.png 319B
about1.png 4KB
center.png 209B
gamma.png 387B
picture.png 589B
handle.png 954B
111.jpg 22KB
MainWindow.pro.user.7e5f51a 24KB
opencv_ffmpeg2410_64.dll 9.27MB
MainWindow.pro 2KB
README.md 28KB
zh_tr.ts 19KB
en_tr.qm 75B
camera_recognition.cpp 48KB
tool.cpp 7KB
共 85 条
- 1
资源评论
奋斗奋斗再奋斗的ajie
- 粉丝: 230
- 资源: 2166
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功