Question

Est-il la solution la plus simple pour ajouter du flou de mouvement à une image dans Qt?N'ai pas trouvé de bon tuto sur le flou.J'ai besoin de quelque chose de vraiment simple, que j'ai pu comprendre, et serait vraiment bien si je pouvais changer le flou angles.

Était-ce utile?

La solution

Qt n'est pas un flou de bougé filtre.J'ai regardé le code de QGraphicsBlurEffect;il utilise QPixmapBlurEffect qui lui-même utilise une assistance interne méthode appelée expblur (exponentielle flou).

expblur lui-même utilise une unidimensionnel effet de flou (flou de mouvement dans la direction X, la méthode qt_blurrow) deux fois.Il fait pivoter l'image entre les deux brouille de 90 degrés et par la suite il tourne le dos.

Donc en fait, Qt a un flou de bougé de l'effet mais c'est interne uniquement.Si vous avez besoin d'écrire votre propre effet.Pour ce faire, ont un oeil sur le code de qt_blurrrow, que vous pouvez trouver dans les sources de Qt à src/gui/qpixmapfilter.cpp.Cela vous donnera une bonne qualité pour le filtre, car il est une exponentielle filtre de flou au lieu de linéaire.

Si vous ne voulez pas aller en profondeur dans le code source de Qt, prendre ce pseudo-code pour commencer:

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.
        }
    }
}

où la matrice peut être définie comme ceci (pour le mouvement horizontal de flou et de rayon 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

Notez que la somme de toutes les entrées est à 1, ou si vous avez de diviser les couleurs par la somme de la matrice des entrées.

La construction de cette matrice pour un rayon r et l'angle α est difficile quand vous voulez autoriser l'arbitraire des angles α (pas seulement de 90 degrés).[EDIT:Voir commentaire 3 pour une simple génération d'une matrice.]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top