سؤال

هل هناك حل بسيط لإضافة الضبابية إلى صورة في كيو تي?لم يتم العثور على أي برنامج تعليمي جيد حول طمس.أحتاج إلى شيء بسيط حقا ، يمكنني فهمه ، وسأكون جيدا حقا إذا كان بإمكاني تغيير زوايا التمويه.

هل كانت مفيدة؟

المحلول

كيو تي ليس لديه مرشح ضبابية الحركة.نظرت إلى رمز QGraphicsBlurEffect;يستخدم QPixmapBlurEffect الذي يستخدم نفسه طريقة مساعد داخلي تسمى expblur (طمس الأسي).

expblur نفسها تستخدم تأثير طمس أحادي البعد (ضبابية الحركة في الاتجاه العاشر ، الطريقة qt_blurrow) مرتين.يقوم بتدوير الصورة بين الطمس بمقدار 90 درجة ثم يقوم بتدويرها مرة أخرى.

لذلك في الواقع ، كيو تي لديها تأثير ضبابية الحركة ولكن هذا داخلي فقط.لذلك تحتاج إلى كتابة التأثير الخاص بك.للقيام بذلك ، إلقاء نظرة على رمز qt_blurrrow, ، والتي يمكنك العثور عليها في مصادر كيو تي في src/gui/qpixmapfilter.cpp.هذا وسوف تعطيك نوعية جيدة للمرشح ، لأنه هو مرشح طمس الأسي بدلا من واحد خطي.

إذا كنت لا تريد أن تذهب عميقا في شفرة المصدر كيو تي ، واتخاذ هذا الرمز الزائف كبداية:

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 ، أو عليك تقسيم الألوان على مجموع إدخالات المصفوفة.

بناء هذه المصفوفة لنصف قطر معين ص وزاوية-أمر صعب عندما تريد السماح بزوايا عشوائية لـ - (ليس فقط 90 درجة خطوات).[تحرير:انظر التعليق 3 للحصول على جيل سهل من هذه المصفوفة.]

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top