سؤال

ولست بحاجة لكتابة برنامج يستخدم ضرب المصفوفات لتدوير الصورة (مربع بسيط)، استنادا إلى وسط الميدان، على قدر معين من درجة بناء على ما أحتاج. اي مساهمه في هذا ستكون خدمة عظيمة. لدي تقريبا أي دليل على ما أقوم به لأنني لم تتخذ بقدر ما هو نظرة سريعة على حساب التفاضل والتكامل.

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

المحلول

ونلقي نظرة على http://www.aforgenet.com/framework/ . هذا هو إطار معالجة الصور كاملة في C # بأنني أستخدم على المشروع. أنا فقط التحقق مساعدتهم ولديهم وظيفة أن يفعل ما تريد -

// create filter - rotate for 30 degrees keeping original image size
RotateBicubic filter = new RotateBicubic( 30, true );
// apply the filter
Bitmap newImage = filter.Apply( image );

ومن مكتبة LGPL، حتى إذا كان الترخيص هو المشكلة، إذا قمت بربط ضد الثنائيات، وسيكون لديك أي قضايا. هم أيضا مكتبات أخرى هناك.

إذا ما قرر أن يكتب ذلك بنفسك، كن حذرا حول السرعة كما C # فعل عدد الطحن ليست كبيرة. ولكن هناك طرق للتغلب على ذلك.

نصائح أخرى

إليك جيدة مقال مشروع قانون مناقشة فقط ما كنت ترغب:

http://www.codeproject.com/KB/GDI-plus /matrix_transformation.aspx

وتناوب صورة رقمية في الطائرة يتلخص في الكثير من ضرب المصفوفات 2X2. ليس هناك حساب التفاضل والتكامل المعنية هنا! أنت لا تحتاج إلى إطار معالجة الصور كامل لتدوير صورة مربعة - ما لم يكن هذا هو حقا الأداء حساسة من حيث جودة الصورة وسرعة.

والذهاب وقراءة النصف الأول من المقالة على مصفوفة التناوب والتي يجب ان تحصل يمكنك أن تبدأ بداية جيدة.

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

والمتعة،

وبول

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