是否有簡單的解決方案將運動模糊添加到Qt中的圖像?還沒有找到任何有關模糊的好教程。我需要一些非常簡單的東西,我可以理解,並且如果我能夠改變模糊角度,那將會非常好。Qt運動(線性)模糊
回答
Qt沒有運動模糊濾鏡。我看了一下QGraphicsBlurEffect
的代碼;它使用QPixmapBlurEffect
,它本身使用稱爲expblur
(指數模糊)的內部幫助器方法。
expblur
本身使用一次模糊效果(X方向上的運動模糊,方法qt_blurrow
)兩次。它將兩個模糊之間的圖像旋轉90度,然後將其旋轉回來。
所以實際上,Qt 有運動模糊效果,但這只是內部的。所以你需要寫出自己的效果。爲此,請查看qt_blurrrow
的代碼,您可以在Qt源文件中找到src/gui/qpixmapfilter.cpp
。這會爲濾鏡提供很好的質量,因爲它是一個指數模糊濾鏡,而不是線性模糊濾鏡。
如果你不想去,從而深入到了Qt源代碼,藉此僞代碼作爲開始:
foreach pixel (x, y) in image {
for dx = -r to r with x+dx within image {
for dy = -r to r with y+dy within image {
Add pixel (x+dx, y+dy) of the source image with ↩
factor (matrix[dx, dy]) to the target image.
}
}
}
其中矩陣可以這樣來定義(用於水平運動模糊半徑2):
0 0 0 0 0
0 0 0 0 0
0.1 0.2 0.4 0.2 0.1
0 0 0 0 0
0 0 0 0 0
注意,所有條目的總和必須是1,或者具有由矩陣條目的總和來劃分顏色。
對於給定的半徑r和角度α,建立這個矩陣當你想允許任意角度α(不僅是90度步長)時很困難。 [編輯:請參閱評論3爲這種矩陣的簡單生成。]
如果我還記得,這個矩陣是一個卷積矩陣。在java上使用它,然後我需要所有角度的模糊,然後我拒絕它作爲一種可能性。但找不到更好的東西。 但是,這個矩陣我可以得到比90步更多的角度。例如,使45個步驟的角度,只是差異矩陣成員將不是零?例如 'x 0 0 0 0 0 x 0 0 0 0 0 x 0 0 0 0 0 x 0 0 0 0 0 x' 我是對嗎? 45度模糊? –
是的,這將是45度。但是,如果您的示例矩陣中的每個x都是相同(常數)的數字,則它將是線性模糊,看起來不自然。爲了獲得更好的質量,您應該對方形模糊使用線性函數(http://www.wolframalpha.com/input/?i=1-abs%28x%29+for+-1%3Cx%3C1)。我不知道指數模糊背後的數學問題,但我期待指數函數;)但我認爲方形模糊的線性函數就足夠了。 – leemes
嗯,我忘了說:爲了生成一個矩陣,你可以作弊一點:讓Qt在一個小的黑色圖像((2r + 1)*(2r + 1)像素)中畫一條白線。當然,你應該啓用抗鋸齒。對於線性函數,您可以在之後應用徑向漸變模式(外部爲黑色,內部爲透明)。這就給了你我之前評論中描述的矩陣(像素的灰度值)。 ;) – leemes
- 1. 運動模糊圖像的去模糊
- 2. Qt模糊錯誤
- 3. ListView滾動線條模糊
- 4. Qt模糊QMovie(來自gifs)
- 5. qt qtoolbutton圖標模糊
- 6. 的Qt:模糊窗口
- 7. 模糊線性佈局背景
- 8. GLSL運動模糊抖動的
- 9. 滾動時的運動模糊效果
- 10. 使用純粹GLSL的2D運動模糊和高斯模糊
- 11. 用於對角線運動模糊的卷積矩陣
- 12. 用相機輸入的實時性能去除運動模糊
- 13. 運動模糊與WebGL和three.js
- 14. 2D運動模糊解決方案
- 15. GLSL可以讓Photoshop「運動模糊」嗎?
- 16. 修復運動模糊從mpeg2video
- 17. 運動模糊方向識別DirectX
- 18. HTML5 Canvas運動模糊效果?
- 19. 無法運行簡單的Qt示例程序,模糊錯誤
- 20. QT UI模糊後才重新繪製
- 21. 模糊的Qt快速文本
- 22. Qt Qpixmap生成模糊圖像
- 23. 模糊QT中的QWidget效果
- 24. wpf線條顯示模糊
- 25. 的Qt:元素可見和不模糊(無需滾動)
- 26. JQuery模糊動畫
- 27. CSS3模糊動畫
- 28. 移動模糊「a」
- 29. 模糊動畫angularjs
- 30. 運營商模糊過載+
Qt本身沒有運動模糊效果AFAIK。 QGraphicsBlurEffect是一個簡單的半徑模糊。然而,你可以看看[這個鏈接](http://http.developer.nvidia.com/GPUGems3/gpugems3_ch27.html),如果你想要在圖像平面內均勻模糊,忽略深度部分。也許你可以創建自己的QGraphicsEffect。 – Bart