资源简介
使用 Qt Quick 实现的图像处理实例,支持黑白、锐化、底片、柔化、灰度、浮雕等特效。展示 Qt 中 QML 与 C++ 混合编程技术、多线程、自定义事件等关键技术。
代码片段和文件信息
#include “imageProcessor.h“
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef void (*AlgorithmFunction)(QString sourceFile QString destFile);
class AlgorithmRunnable;
class ExcutedEvent : public QEvent
{
public:
ExcutedEvent(AlgorithmRunnable *r)
: QEvent(evType()) m_runnable(r)
{
}
AlgorithmRunnable *m_runnable;
static QEvent::Type evType()
{
if(s_evType == QEvent::None)
{
s_evType = (QEvent::Type)registerEventType();
}
return s_evType;
}
private:
static QEvent::Type s_evType;
};
QEvent::Type ExcutedEvent::s_evType = QEvent::None;
static void _gray(QString sourceFile QString destFile)
{
QImage image(sourceFile);
if(image.isNull())
{
qDebug() << “load “ << sourceFile << “ failed! “;
return;
}
qDebug() << “depth - “ << image.depth();
int width = image.width();
int height = image.height();
QRgb color;
int gray;
for(int i = 0; i < width; i++)
{
for(int j= 0; j < height; j++)
{
color = image.pixel(i j);
gray = qGray(color);
image.setPixel(i j qRgba(gray gray gray qAlpha(color)));
}
}
image.save(destFile);
}
static void _binarize(QString sourceFile QString destFile)
{
QImage image(sourceFile);
if(image.isNull())
{
qDebug() << “load “ << sourceFile << “ failed! “;
return;
}
int width = image.width();
int height = image.height();
QRgb color;
QRgb avg;
QRgb black = qRgb(0 0 0);
QRgb white = qRgb(255 255 255);
for(int i = 0; i < width; i++)
{
for(int j= 0; j < height; j++)
{
color = image.pixel(i j);
avg = (qRed(color) + qGreen(color) + qBlue(color))/3;
image.setPixel(i j avg >= 128 ? white : black);
}
}
image.save(destFile);
}
static void _negative(QString sourceFile QString destFile)
{
QImage image(sourceFile);
if(image.isNull())
{
qDebug() << “load “ << sourceFile << “ failed! “;
return;
}
int width = image.width();
int height = image.height();
QRgb color;
QRgb negative;
for(int i = 0; i < width; i++)
{
for(int j= 0; j < height; j++)
{
color = image.pixel(i j);
negative = qRgba(255 - qRed(color)
255 - qGreen(color)
255 - qBlue(color)
qAlpha(color));
image.setPixel(i j negative);
}
}
image.save(destFile);
}
static void _emboss(QString sourceFile QStri
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-07-15 00:07 imageProcessor\
目录 0 2014-06-04 23:06 imageProcessor\android\
文件 3471 2014-06-04 23:06 imageProcessor\android\AndroidManifest.xm
文件 11531 2014-07-13 16:36 imageProcessor\imageProcessor.cpp
文件 993 2014-07-13 16:21 imageProcessor\imageProcessor.h
文件 783 2014-06-04 23:08 imageProcessor\imageProcessor.pro
文件 13401 2014-07-15 00:07 imageProcessor\imageProcessor.pro.user
文件 3400 2014-06-04 10:24 imageProcessor\imageProcessor64.png
文件 4945 2014-06-04 10:24 imageProcessor\imageProcessor80.png
文件 706 2014-07-13 16:46 imageProcessor\main.cpp
目录 0 2014-06-04 10:24 imageProcessor\qml\
目录 0 2014-07-14 23:42 imageProcessor\qml\imageProcessor\
文件 5147 2014-07-14 23:42 imageProcessor\qml\imageProcessor\main.qml
目录 0 2014-06-04 23:05 imageProcessor\qtquick2applicationviewer\
文件 2797 2014-06-04 23:05 imageProcessor\qtquick2applicationviewer\qtquick2applicationviewer.cpp
文件 948 2014-06-04 10:24 imageProcessor\qtquick2applicationviewer\qtquick2applicationviewer.h
文件 7492 2014-06-04 10:24 imageProcessor\qtquick2applicationviewer\qtquick2applicationviewer.pri
- 上一篇:点扩散函数PSF
- 下一篇:ER随机图代码C语言
相关资源
- QT点菜系统
- C++实现mqtt协议
- C++ QT中 通过UDP广播获取网络中所有设
- QT 飞秋聊天工具 c++
- Qt编写的画图小程序c++语言
- Qt5实现的一个mvc的
- 基于QT的黑白棋游戏
- [近乎免费]QT计算器(一般计算器和多
- 《C++ GUI QT编程》教程配套
- QT treeWidget 加载指定路径所有文件夹和
- 图片版QT黑白棋
- Qt/C++ 网站爬虫源码
- Qt5Twain.rar
- 基于Qt的2048游戏实现
- VTK与Qt整合的
- QT编写DLL 用 QTWinmigrate及,超级值得
- fmod 音频库 c++ Qt编写
- 数据结构课设排序算法的可视化演示
- 简易版的QT5实现RS232通信
- 基于QtQuick的QCustomPlot实现
- QTP 运行报:Microslft Visual C++ Runtime Lib
- C++学习路线视频全套
- 基于Qt5.9Creator的一个简单socket通信C
- 基于qt5.8写的一个贝塞尔曲线非转存
- waterProcess.zip
- QT C++检测计算机软硬件信息
- qt 遮罩背景
- Quicksum(C语言)
- QT C++ 算法 广搜BFS 最小步数解二阶魔
- PyQt5:pyCharts 绘制饼图
评论
共有 条评论