How to connect a Webcam to Simulink

조회 수: 26 (최근 30일)
Dimuthu Arachchige
Dimuthu Arachchige 2022년 6월 1일
댓글: Dimuthu Arachchige 2022년 6월 7일
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'.

채택된 답변

Biral Pradhan
Biral Pradhan 2022년 6월 5일
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.
  댓글 수: 1
Dimuthu Arachchige
Dimuthu Arachchige 2022년 6월 7일
Thank you for the suggestion. It works.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by