How to connect a Webcam to Simulink

19 visualizaciones (últimos 30 días)
Dimuthu Arachchige
Dimuthu Arachchige el 1 de Jun. de 2022
Comentada: Dimuthu Arachchige el 7 de Jun. de 2022
I initialized a video input object in a simulink callback function (initialization function), and I am reading the video feed from the webcam through a MATLAB function block. However, the function block does not identify the video object, but the video object is present in the base workspace.
Simulink InitFcn callback block
load('stereoParams.mat');
vidobj=videoinput('winvideo',1);%,'MJPG_1280x480');
triggerconfig(vidobj, 'manual');
start(vidobj);
%save('vidobj.mat', 'vidobj'); ---- this is used to save it and read it
%using FromFile block.
stopFcn:
delete(vidobj);
disp("Closed");
MATLAB function block: (tried the same thing in interpreted MATLAB function block)
function disparityMap = camera(steps, data)
if steps>=20
% vidobj = getVariable(mdwks, 'vidobj');
img=getsnapshot(vidobj);
imgL = img(:,1:640,:);
imgR = img(:,641:1280,:);
[JL,JR] = rectifyStereoImages(imgL,imgR,stereoParams);
IL = rgb2gray(JL);
IR = rgb2gray(JR);
disparityMap = disparitySGM(IL,IR, 'DisparityRange',[0,64]);%, 'InitialMagnification',50);
% imshow(disparityMap,[0,64],);
disp("running")
else
disparityMap = [0,0;0,0];
end
end
How can I read this video object from the base workspace? It is not a timeseries data. It is a object which update with time from camera.
I tried "from workspace" and "from file" blocks to read the video object, but I get this error.
Error: "from workspace"
Invalid structure-format variable specified as workspace input in 'PID_lengthChanges_joystic_copy/From Workspace'. If the input signal is a bus signal, the variable must be a structure of MATLAB timeseries objects. Otherwise, the variable must include 'time' and 'signals' fields, and the 'signals' field must be a structure with a 'values' field.
Error: "from file"
Simulink does not support loading the input data in file 'vidobj.mat'. For data saved using MAT file versions prior to 7.3, Simulink can only load two-dimensional arrays consisting of one-dimensional, double, noncomplex samples. To load data of any other type, complexity or dimension, use a timeseries object and save the file using MAT file version 7.3 or later. For example, use: 'save file_name -v7.3 timeseries_object'.

Respuesta aceptada

Biral Pradhan
Biral Pradhan el 5 de Jun. de 2022
I understand, you have a video input from an external hardware using Windows Video adaptor, and want to import it into Simulink. I would kindly like to inform you that "Image Acquisition Toolbox™ Support Package for OS Generic Video Interface" allows this functionality. There is a block, called "From Video Device", that lets you capture image and video data streams from image acquisition devices, such as cameras and frame grabbers, in order to bring the image data into a Simulink model.
For more information, kindly follow the following documentation links.

Más respuestas (0)

Categorías

Más información sobre Computer Vision with Simulink en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by