문제

QT의 이미지에 모션 블러를 추가하는 간단한 해결책이 있습니까?흐림에 대한 좋은 튜토리얼을 찾지 못했습니다.나는 정말로 단순한 것을 필요로하고, 이해할 수있는 것, 나는 흐림 각도를 바꿀 수 있다면 정말로 좋을 것입니다.

도움이 되었습니까?

해결책

Qt에는 모션 블러 필터가 없습니다. 나는 QGraphicsBlurEffect의 코드를 보았습니다. QPixmapBlurEffect (지수 흐림)라는 내부 도우미 메서드를 사용하는 expblur를 사용합니다.

expblur 자체 자체는 1 차원 블러 효과 (모션 블러, 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을 참조하십시오.]

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top