# 一、写在前面
软件介绍:
> 首先介绍一下该软件,这是我在 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();
没有合适的资源?快使用搜索试试~ 我知道了~
使用QT5+Opencv完成简单的图形处理及视频处理软件。图形处理包:灰度化、均值滤度、边际检测、伽马、庞变换调节、二值.zip
共71个文件
png:35个
jpg:9个
cpp:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 157 浏览量
2023-04-26
11:08:52
上传
评论 1
收藏 11.81MB ZIP 举报
温馨提示
使用QT5+Opencv完成简单的图形处理及视频处理软件。图形处理包:灰度化、均值滤度、边际检测、伽马、庞变换调节、二值.zip
资源推荐
资源详情
资源评论
收起资源包目录
使用QT5+Opencv完成简单的图形处理及视频处理软件。图形处理包:灰度化、均值滤度、边际检测、伽马、庞变换调节、二值.zip (71个子文件)
QT5-Image-and-video-processing-software-master
MainWindow.pro.user.4.8-pre1 23KB
mainwindow.cpp.autosave 57KB
.DS_Store 6KB
mainwindow.h 4KB
videosurface.h 509B
en_tr.ts 16KB
video.cpp 2KB
mainwindow.cpp 57KB
zh_tr.qm 5KB
videosurface.cpp 2KB
MainWindow.pro.user 24KB
main.cpp 962B
mainwindow.ui 40KB
opencv_ffmpeg2410.dll 9.27MB
myimage.qrc 2KB
video.h 443B
picture.ico 4KB
myico.ico 1KB
images
fuhe.png 826B
stop.png 1KB
2.jpg 324KB
name1.png 3KB
fileopen.png 854B
prev.png 1022B
bianyuan.png 490B
style.qss 50B
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
about.png 965B
help.png 633B
next.png 1KB
1111.jpg 15KB
left.png 184B
filenew.bmp 2KB
find.png 964B
bg.jpg 7KB
cool-background1.png 124KB
turn-right.png 731B
background.png 29KB
zh-en.png 663B
zoom-in.png 1KB
slide.png 192B
video.png 884B
start.png 1KB
苹果发布会开场极其舒适的宣传片.flv 2.7MB
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
opencv_ffmpeg2410_64.dll 9.27MB
MainWindow.pro 2KB
README.md 28KB
zh_tr.ts 19KB
en_tr.qm 75B
共 71 条
- 1
资源评论
- 惡惡臭臭2023-05-10资源不错,对我启发很大,获得了新的灵感,受益匪浅。
- 2301_774853122023-12-16资源值得借鉴的内容很多,那就浅学一下吧,值得下载!
快撑死的鱼
- 粉丝: 1w+
- 资源: 9156
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功