資源簡介
使用 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?“?<????????return;
????}
????qDebug()?<“depth?-?“?<
????int?width?=?image.width();
????int?height?=?image.height();
????QRgb?color;
????int?gray;
????for(int?i?=?0;?i?????{
????????for(int?j=?0;?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?“?<????????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?????{
????????for(int?j=?0;?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?“?<????????return;
????}
????int?width?=?image.width();
????int?height?=?image.height();
????QRgb?color;
????QRgb?negative;
????for(int?i?=?0;?i?????{
????????for(int?j=?0;?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語言
評論
共有 條評論