[討論] 如何釋放影像內存的疑問?已回收
我現在才意識到原來寫程式還有內存的顧慮(Orz)
剛剛在找IMAQMEM這個指令的問題才發現到,老師有跟我說希望程式是無限循環
然後要停指它才停止.
我電腦是2G記憶體,我計算過時間大約只能跑3分20多秒(我沒設內存限制,電腦應該是看我
本身記憶體有多大下去run,學弟是跟我說一定是我寫法有問題...)
所以要釋放記憶體,也就是刪除不要的內存變量 clear all;
我想問的是
1.一般我看到的影像流程是電腦先把攝影機擷取的影像儲存到記憶體內
然後在matlab秀出,這時候內存一直在記憶當中.
還是說每次matlab在秀攝影機擷取的圖片後都會自動釋放內存無須給予指令?
2.我的即時無線迴圈程式寫法時有異常消耗內存嗎?
如何刪除釋放每次秀出後的影像內存?
vid = videoinput('winvideo',1);
bx = ones(480,640);
set(vid, 'FramesPerTrigger', Inf);
set(vid, 'ReturnedColorspace', 'rgb')
vid.FrameGrabInterval = 5;
start(vid)
while (vid.FramesAcquired > -1 )
data = getsnapshot(vid);
diff_im = imsubtract(data(:,:,1), rgb2gray(data));
diff_im = medfilt2(diff_im, [3 3]);
diff_im = im2bw(diff_im,0.27);
diff_im = bwareaopen(diff_im,100);
bw = bwlabel(diff_im,8);
bw = fliplr(bw);
stats = regionprops(bw, 'BoundingBox', 'Centroid');
imshow(bx)
hold on
for object = 1:length(stats)
bd = stats(object).Centroid;
bd(1)=round(bd(1));
bd(2)=round(bd(2));
plot(bd(1),bd(2),'-m+ ');
a=text(bd(1)+4,bd(2), strcat('X: ', num2str(round(bd(1))), ' Y: ',
num2str(round(bd(2))))) ;
set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12,
'Color', 'black');
end
hold off
end
stop(vid)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.96.35.20
推
01/05 08:17, , 1F
01/05 08:17, 1F
→
01/05 08:17, , 2F
01/05 08:17, 2F
→
01/05 08:18, , 3F
01/05 08:18, 3F
→
01/05 11:28, , 4F
01/05 11:28, 4F
→
01/05 11:31, , 5F
01/05 11:31, 5F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章
14
35