Matlab erbjuder flera sätt att fånga video, beroende på dina behov och hårdvaran du använder. Här är exempel som använder verktygslådan "IMAQ" (för mer kontroll och olika enheter) och funktionen "VideoInput" (enklare, men potentiellt mindre flexibel).
Metod 1:Använda verktygslådan `imaq '(rekommenderas för de flesta fall)
Denna metod ger mer flexibilitet och kontroll över förvärvsprocessen, så att du kan arbeta med olika videokällor (webbkameror, fångstkort etc.). Du behöver verktygslådan för bildförvärv.
`` `Matlab
% Byt ut 'WinVideo' med lämplig adapter för din enhet.
% Använd imaqhwinfo för att lista tillgängliga adaptrar och enheter.
vid =videoinput ('winvideo', 1); % 1 representerar vanligtvis den första kameran
% Ställ in egenskaper (justera dessa efter behov)
set (vid, 'FrameSperTrigger', 1); % Fånga en ram åt gången
set (vid, 'triggerrepeat', inf); % Fångar kontinuerligt
set (vid, 'returnedColorSpace', 'rgb'); % Få RGB -bilder
% Starta videoförvärvet
start (vid);
% Capture Frames (Exempel:Fånga i 10 sekunder)
tic;
Medan TOC <10
[ram, tid, ~] =getData (vid, 1); % Få en ram
imshow (ram); % Visa ramen
Titel (Sprintf ('Tid:%.2f sekunder', tid));
ritnow; % Uppdatera displayen
avsluta
% Stoppa videoförvärvet
stopp (vid);
ta bort (vid);
klar vid;
`` `
innan du kör detta:
1. Kontrollera din adapter: Kör `imaqhwinfo` i kommandofönstret för att se vilka videoinmatningsenheter som finns tillgängliga på ditt system. Detta kommer att berätta rätt adaptersträng att använda (t.ex. 'winvideo', 'gige', 'gentl'). Numret efter adaptern (t.ex. `1 ') väljer en specifik enhet om flera finns.
2. Installera verktygslådan för bildförvärv: Om du inte har det kan du behöva lägga till den i din MATLAB -installation.
Metod 2:Använda `VideoInput '(enklare, mindre mångsidig)
Denna funktion är ett högre nivåomslag runt `IMAQ '. Det är lättare att använda för grundläggande webbkamera-fångst men erbjuder mindre finkornig kontroll.
`` `Matlab
vid =videoinput ('winvideo', 1); % Byt ut 1 med lämpligt enhets -ID vid behov
set (vid, 'FrameSperTrigger', 1);
set (vid, 'triggerrepeat', inf);
förhandsvisning (vid); % Startförhandsvisning
% Capture Frames (Exempel:Fånga 10 ramar)
för i =1:10
img =getnapshot (vid);
imshow (img);
paus (0,1); % Liten paus för att se bilderna
avsluta
stopp (vid);
ta bort (vid);
klar vid;
`` `
Viktiga överväganden:
* Felhantering: Ovanstående kod saknar felhantering. I en produktionsmiljö bör du lägga till "Try-catch" -block för att hantera potentiella fel (t.ex. enhet som inte hittas, anslutningsproblem).
* bildhastighet: Du kan styra bildhastigheten med hjälp av egenskaper som `vid.FrameSperTrigger` och` vid.TriggerRepeat`. För kontinuerlig fångst, ställ in `FRAMESPERTRIGGER 'till ett högre värde eller" inf "och justera slingan i enlighet därmed.
* Upplösning: Upplösningen av den fångade videon beror på din kamera och kan justeras med egenskaper som `vid.Videoresolution '.
* Filbesparing: För att spara den fångade videon måste du använda funktioner som `imwrite` för att spara enskilda ramar som bilder (t.ex. i en sekvens av JPGS eller PNGS) eller använda ett videokribentobjekt (` videokriter`) för att skapa en videofil (t.ex. AVI, MP4).
Kom ihåg att ersätta `'WinVideo', 1 'med lämplig adapter- och enhets -ID för din specifika installation. Kontakta alltid MATLAB -dokumentationen för funktionen "IMAQ" och "videoinput" -funktionen för detaljerad information och avancerade alternativ.