ذات مرة ، عندما كنت جالسًا على موقع YouTube ، أبحث عن ألحان تعليمية مثيرة للاهتمام ، صادفت مقاطع فيديو من Synthesia ، وقد أحببت بعضها حقًا ، وقررت التنزيل والتعلم ... =) لكن للأسف ، ظهر أن هناك مقاطع فيديو ، لكن لا أحد يريد تحميل ملفات midi = (
قررت شركة Google معرفة ما إذا كانت هناك حلول جاهزة تناسبني ، ولكن للأسف ، من حقيقة أنني وجدت أنه كان هناك محولات صوتية فقط في midi ، مما أزعجني قليلاً ... دون التفكير مرتين ، قررت أن تكون كافية لاستعادة معدل إطارات MIDI في مقاطع الفيديو ... ، وقررت أن أحاول تنفيذ هذا العمل ....
لم أكن أريد أن أكتب كل شيء من البداية ، لأنني قررت ما سأفعله على المكونات الجاهزة التي يوفرها لي دبيان جنو / لينكس ، والتي من خلالها كان الثعبان هو الأنسب.
في بداية التطبيق ، قررت أن أستخدم صورًا جاهزة (تم سحبها من مقاطع الفيديو) ، لكن بعد التحميلات الأولى أدركت أنه لا معنى لها ... اتضح أنها كانت بطيئة للغاية وتستهلك أيضًا موارد كبيرة على المسمار ... ثم قررت تجربة شيء جديد بنفسي كما يلي OpenCV (أردت أن أشعر به لفترة طويلة) ، اتضح أن OpenCV يعمل بشكل جيد مع دفق الفيديو ، ويوفر جميع الوظائف التي أحتاجها (عد البكسل وإطارات العرض والنص).
على سبيل المثال ، يمكن وصف فتح ملف فيديو واستقبال إطار واحد في سطرين:
vidcap = cv2.VideoCapture('test.mp4') success,image = vidcap.read()
وإذا أردت ، يمكنك تفريغ الإطارات على الفور على الفور:
cv2.imwrite("/tmp/frame%d.jpg" % frame, image)
بعد مرور بعض الوقت ، كتبت وظيفة لإنشاء مواضع مفاتيح لوحة المفاتيح الافتراضية وعرضها (في شكل مستطيلات) أعلى صورة الدفق وتحميل الصورة ، حدث ما يلي:

لذا ، بعد أن قررت أن الإطار حسب الإطار ، عند قراءة الصورة من دفق الفيديو ، سوف أقرأ الملاحظات النشطة من موضع المفاتيح الافتراضية (الملاحظات فقط التي تتزامن وحدات البكسل مع اللون المرجعي أو ليست بعيدة عنها) نشطة وترسلها إلى midi. لا يمكنني ببساطة تسجيل الملاحظات ، كما لو كان الوضع على لوحة مفاتيح midi عادية ، كان الأمر أسهل قليلاً ... لقد راجعت الفيديو ، ورأيت عدد الملاحظات التي حصلت عليها (وكان هناك الكثير منها) لم أكن أعتقد أنها سيئة ، كل ما كان علي فعله هو معرفة كيفية كتابة الملاحظات في ملف ، والبحث عن القليل ، وجدت حزمة بيثون بيثون-ميديتيل كبيرة. بعد بعض الوقت ، تمكنت من تسجيل الملاحظات في midi. كما اتضح فيما بعد ، فإن python-midiutil هو كيس بسيط للغاية وسهل الاستخدام للغاية. على سبيل المثال ، يتم إنشاء ملف وإضافة ملاحظات في سطرين:
mf.addTrackName(track, time, "Sample Track") mf.addTempo(track, time, 60 ) mf.addNote(track, channel, pitch, keytime, duration, volume) with open(outputmid, 'wb') as outf: mf.writeFile(outf)
أصبح تنزيل midi الناتج في LMMS ناجحًا للغاية. بادئ ذي بدء ، قمت باستعادة اثنين من الألحان المفضلة لدي. ثم أصبح من الواضح أن وظيفة إنشاء المواضع الرئيسية لم تكن مريحة للغاية من الأسطوانة إلى الأسطوانة ، تم تغيير موقعها ، وقررت أن أفعل واجهة المستخدم الرسومية ، لقد قمت بعمل بسيط ، ولكن مع وظيفة وضع المفاتيح

أعتقد أن هذا البرنامج يمكن أن يكون مفيدًا للكثيرين ، لأنني نشرت كل شيء على جيثب