سؤال

أود أن أعرف كيف يمكنني تسجيل فيديو في MATLAB مع كاميرا ويب.

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

المحلول

ملاحظة: هذا هو تحديث الآن للاستخدام مع إصدارات أحدث من MATLAB لأن بعض كبار السن وظيفة تم استبدالها و إزالتها.

إذا كنت تعرف بالفعل كيفية التقاط صورة واحدة من كاميرا ويب, ثم ينبغي أن يكون مجرد مسألة خياطة الصور معا في الفيلم.يمكنك استخدام VideoWriter وجوه لفتح ملف الفيلم ومن ثم إضافة الصور باستخدام متسلسلة writeVideo الأسلوب.على سبيل المثال:

aviObject = VideoWriter('myVideo.avi');  % Create a new AVI file
for iImage = 1:100                       % Capture 100 frames
  % ...
  % You would capture a single image I from your webcam here
  % ...
  writeVideo(aviObject, I);  % Add the image to the AVI file
end
close(aviObject);  % Close the AVI file

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

نصائح أخرى

بناء أول فيديو واجهة الإدخال

vid = videoinput('winvideo',1,'RGB24_400x300');

سوف تحتاج إلى ضبط آخر بت على كاميرا ويب الخاص بك.العثور على قائمة من أجهزة كاميرا ويب (و أشياء أخرى إلى جانب) الاستخدام:

imaqhwinfo

التالية يجعل أول كاميرا إلى كائن

a=imaqhwinfo('winvideo',1)

العثور على قائمة دعم صيغ الفيديو مع

a.SupportedFormats

ثم سوف تحتاج إلى تحديد معدل الإطار الخاص بك (أكثر على هذا هنا):

set(vid,'FramesPerTrigger',100);
start(vid);
wait(vid,Inf);

% Retrieve the frames and timestamps for each frame.
[frames,time] = getdata(vid, get(vid,'FramesAvailable'));

% Calculate frame rate by averaging difference between each frame's timestamp
framerate = mean(1./diff(time))

على FrameGrabInterval الخاصية تحدد كيف في كثير من الأحيان الإطارات المخزنة من دفق الفيديو.على سبيل المثال, إذا نحن تعيينها إلى 5 ثم 1 في 5 إطارات يتم الاحتفاظ -- الأخرى 4 إطارات سيتم التخلص منها.باستخدام فراميراتي, تحديد كيف في كثير من الأحيان كنت ترغب في الحصول على إطارات

set(vid,'FrameGrabInterval',10);

لتحديد كيفية العديد من الإطارات للحصول على مجموع حساب إجمالي عدد الإطارات التي سيتم الحصول عليها في الجهاز معدل الإطار ، ثم القسمة على FrameGrabInterval.

capturetime = 30;
interval = get(vid,'FrameGrabInterval');
numframes = floor(capturetime * framerate / interval)

أنت الآن على استعداد لتسجيل واللعب مع الفيديو باستخدام getdata قيادة (peekdata هو أيضا مفيدة), ومع ذلك...

إذا كان عدد كبير من إطارات سيتم الحصول عليها ، فإنه من الناحية العملية إلى سجل الصور إلى القرص بدلا من الذاكرة.باستخدام صورة اقتناء الأدوات, يمكنك تسجيل الصور مباشرة إلى ملف AVI.نحن تكوين هذا باستخدام LoggingMode الملكية.

set(vid,'LoggingMode','disk');

إنشاء ملف AVI كائن إلى تسجيل الدخول باستخدام avifile الأمر.يجب تحديد اسم الملف إلى استخدام معدل الإطار أن ملف AVI ينبغي أن تكون لعبت مرة أخرى في.ثم تعيين DiskLogger خاصية إدخال الفيديو كائن إلى ملف AVI.

avi = avifile('timelapsevideo','fps',framerate);
set(vid,'DiskLogger',avi);

بدء مرور الزمن اقتناء وانتظر اقتناء لإكمال.لاحظ أن الصورة اقتناء الأدوات لا ربط MATLAB® في حين أنه هو الحصول على.يمكنك البدء في الحصول على الاستمرار في العمل في MATLAB.

start(vid);
wait(vid,Inf); % Wait for the capture to complete before continuing.

بمجرد التقاط إكمال استرداد ملف AVI كائن واستخدام وظيفة قريبة لتحرير الموارد المرتبطة به.

avi = get(vid,'DiskLogger');
avi = close(avi);

عندما كنت فعلت مع الفيديو كائن مدخلات, يجب عليك استخدام وظيفة الحذف لتحرير موارد الأجهزة المرتبطة به ، و إزالته من مساحة العمل باستخدام وظيفة واضحة.

delete(vid);
clear vid;

جزء كبير ، ولكن ليس كل ما ورد أعلاه تم استخلاصها من هنا.

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

triggerconfig(vid,'manual');
start(vid); %There'll be a delay here, but nothing is being captured
trigger(vid); %Use this line when you want the capture to start. There should be very little delay.

المزيد من المعلومات حول المشغلات و التزامن هنا.

وهنا يمكنك مشاهدة أشرطة فيديو كبيرة كيفية التقاط ومعالجة الصور من الكاميرا، لذلك ينبغي تسجيل لا يكون من الصعب:

HTTP: // بلوق. mathworks.com/videos/2008/01/18/cool-feature-video-processing-demos/

في حياتي كلية لقد جعلت هذا المشروع يدعى

الصوت / الفيديو مسجلات وتطبيق لاعب على أساس MATLAB

في أن أكون قد فعلت تسجيل صوتي وتسجيل فيديو وتشغيل في برمجة ماتلاب. يمكنك تحميل شفرة المصدر من href="http://shareprogrammingtips.com/wp-content/uploads/2011/09/avplayer.zip" هنا

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

dos('ffmpeg -list_devices true -f dshow -i dummy')

dos('ffmpeg -f dshow -list_options true -i video="USB2.0 HD UVC WebCam')

dos('ffmpeg -f dshow -video_size 1280x720 -framerate 30 -audio_buffer_size 80 -i video="USB2.0 HD UVC WebCam":audio="Microphone (Realtek High Definition Audio)" -t 10 -c:v libx264 -preset veryfast -crf 25 test_vid2.mp4');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top