Я хотел бы одновременно получать данные с камеры (то есть изображения) и аналогового напряжения с использованием Matlab. Для камеры я использую IMAQ набор инструментов, для считывания напряжения, я использую DAQ инструментов (чтение NI-USB устройства), со следующим кодом:Можете ли вы синхронизировать панель сбора данных и панель сбора изображений Matlab?
clear all
% Prepare camera
vid = videoinput('gentl', 1, 'Mono8');
src = getselectedsource(vid);
vid.FramesPerTrigger = 1;
vid.TriggerRepeat = Inf;
triggerconfig(vid, 'hardware', 'DeviceSpecific', 'DeviceSpecific');
src.FrameStartTriggerMode = 'On';
src.FrameStartTriggerActivation = 'RisingEdge';
% prepare DAQ
s=daq.createSession('ni');
s.addAnalogInputChannel('Dev1','ai1','Voltage');
fid = fopen('log.txt','w');
lh = s.addlistener('DataAvailable',@(src,event)SaveData(fid,event));
s.IsContinuous = true;
% Take data
s.startBackground();
start(vid)
N=10;
for ii=1:N
im(:,:,ii)=getsnapshot(vid);
end
% end code
delete(lh);
fclose('all');
stop(vid)
delete(vid)
где функция SaveData
является:
function SaveData(fid,event)
time = event.TimeStamps;
data = event.Data;
fprintf(fid, '%f,%f\n ', [time data]);
end
Я получаю изображения и файл log.txt с трассировкой daq (время и данные), но как я могу использовать внешний запуск (который запускает камеру) или некоторые другие часы для синхронизации двух? В этом примере daq считывает камеру, запускающую TTL-сигнал (@ 50 Гц), поэтому я хочу назначить каждый TTL-импульс изображению.
Добавление: Я искал и нашел несколько обсуждений (как этот one) по этому вопросу, и прочитать examples, которые находятся на сайте Mathworks, но не нашли ответа. Документация показывает, как Start a Multi-Trigger Acquisition on an External Event, но обсуждаемое приобретение применимо только для входа на основе DAQ, а не для ввода на основе камеры (он также работает на переднем плане).
Ничего просто не существует в среде MATLAB; вы можете захотеть использовать внешнюю библиотеку C++ на основе Mex или решение на основе Simulink. – Arcturus
Какое устройство вы используете для записи напряжения? –
Я не понимаю, почему это должно иметь значение, но вы можете видеть в коде это устройство NI (аналоговый USB-считыватель напряжения, такой как USB6009). – 2013-02-26 01:22:36