Large memory usage for image acquisition app

I have written an app for acquiring images from a allied vision camera (gige cam interface) and then to plot histogram of an user defined region of interest. The app works fine for 10 mins and then it failed because memory usage increases steadily.
Camera parameters
app.cam = videoinput('gige', 1, 'Mono8');
app.src = getselectedsource(app.cam);
% Setting initial parameters
app.cam.TriggerRepeat = inf;
app.cam.FramesPerTrigger = 1;
app.cam.Timeout = 30;
Main loop
trigger(app.cam);
frame = getdata(app.cam);
image(app.livecam, 'Cdata', frame);
if ~isempty(app.roi)
app.roi = round(app.roi);
rectangle(app.livecam,'Position',app.roi,'EdgeColor','g')
img = frame(app.roi(2): app.roi(2) + app.roi(4), app.roi(1):app.roi(1)+app.roi(3));
updateHistogram(app, img)
end
Each frame is ca. 800 x 400 pixels.
Could anyone help me solve my app's memory issue ?
Thank you.

3 Comments

I commented out % image(app.livecam, 'Cdata', frame);
Then the memory usage seems stable. Therefore, it is not the incoming frames that is flooding the memory, but the Cdata updating step.
On the contrary to what I read on several threads, found that imshow(frame,'Parent',app.livecam); is less of memory hog than updating just Cdata - image(app.livecam, 'Cdata', frame);
I'm not sure of the behavior given what you've shown, but you might want to double-check to make sure that you're not stacking things in that particular axes. That's kind of a classic way to unintentionally eat memory. Just check the 'children' property of the axes to make sure that there aren't a bunch of images stacked up.

Sign in to comment.

Answers (0)

Products

Release

R2018a

Asked:

on 29 Sep 2021

Commented:

DGM
on 5 Oct 2021

Community Treasure Hunt

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

Start Hunting!