سؤال

أنا أستخدم EMGUCV وأحاول طرح صورتين لإنشاء عامل تصفية مشابه لاحقا .NET التحرك نحو منقي.

هذا هو ما يحاول الإصدار المعدل قليلا من عنوان URL أعلاه القيام به. نظرا 2 صور، المصدر والتراكب - يحرر ببطء الصورة المصدر باتجاه التراكب. يفعل هذا بناء على ما يلي:

result = source + movementFactor * (overlay - source);

عندما تكون النتيجة والمصدر والتراكب عبارة عن صور وعارزة هي معدل التغيير في النطاق من 0 إلى 1.

عندما جربت هذا في التعليمات البرمجية مع fromfactor يساوي 1، تبدو النتائج مبسطة (كان هناك شيء مثل درب الحركة). لاختبارها كذلك، أزلت Formalfactor من المعادلة المذكورة أعلاه، وعلى النتيجة = المصدر + تراكب - المصدر. كنت أتوقع أن أرى صورة التراكب كنتيجة، والتي فعلتها، ولكن مع منطقة واحدة من الصورة التي كانت وامض.

أنا أظن أن شدة بكسل قد تم قصها في الحدود العليا أو السفلية عند إجراء الإضافة / الطرح.

يمكنني تحقيق ما أريد بهذا:

for (int i = 0; i < src.Height; i++)
{
    for (int j = 0; j < src.Width; j++)
    {
        res[i, j] = new Gray(src[i, j].Intensity + movementFactor * (ovr[i, j].Intensity - src[i, j].Intensity));
    }
}

ولكن هذا يبطئ بشكل كبير المعالجة. كيف يمكنني التغلب على مشكلة الإضافة / الالكارة أو مشكلة السرعة مع ما سبق؟ شكرا لإجاباتك!

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

المحلول

سأقوم بنشر الإجابة التي وجدتها هنا، في حالة تشغيل شخص ما عبر نفس المشكلة في المستقبل.

هذه هي الطريقة التي ستفعلها:

Image<Gray,Byte> result = new Image<Gray,Byte>(source.Size);
CvInvoke.cvAddWeighted(source, 1.0-movementFactor, overlay, movementFactor, 0.0, result);

المصدر: منتديات Emgucv، ها هي بريد هذا أعطاني الرد

نصائح أخرى

سأقوم بنشر الإجابة التي وجدتها هنا، في حالة تشغيل شخص ما عبر نفس المشكلة في المستقبل.

هذه هي الطريقة التي ستفعلها:

Image<Gray,Byte> result = new Image<Gray,Byte>(source.Size);
CvInvoke.cvAddWeighted(source, 1.0-movementFactor, overlay, movementFactor, 0.0, result); 

المصدر: منتديات Emgucv، إليك المنشور الذي أعطاني الرد

لاحظ أن هناك بناء جملة نظافة لذلك:

var result = frame.AddWeighted(1.0 - movementFactor, overlay, movementFactor, 0.0);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top