MatLab(图像处理,图像采集)如何通过网络摄像头保存捕获的图像而不覆盖原始文件名?

时间:2013-09-12 05:19:15

标签: image matlab image-processing process counter

每当我按下按钮时,我都希望保存图像而不会覆盖它们。你可以帮我看看如何在不覆盖原件的情况下保存图像吗?我想要做的是每当我按下按钮时,它会一次生成1张图像而不删除原件。

就像在数码相机中一样,每当我点击触发按钮时,它将保存1张图像,文件名将为 image1.jpg 。所以基本上,如果我再次按下触发器,它将再次捕获1个图像,文件名将为 image2.jpg ,依此类推。

这是我的代码:

counter = 1;  %initialize filename increment
vid = videoinput('winvideo',2);
set(vid, 'ReturnedColorSpace', 'RGB');
img = getsnapshot(vid);
imshow(img);
savename = strcat('C:\Users\Sony Vaio\Documents\Task\images\image_' ,num2str(counter), '.jpg'); %this is where and what your image will be saved
imwrite(img, savename);
counter = counter +1;  %counter should increment each time you push the button

我的代码保存并继续覆盖文件名image1.jpg。 为了清楚起见

  

按1按钮,保存1张图像。

就像它会按下按钮时调用整个块代码一样。 我希望你们能帮助我。我现在真的很烦恼:( 谢谢:))

3 个答案:

答案 0 :(得分:2)

如果这是构成该按钮的回调函数的代码,那么确实,它会在每次推送时执行整个块。

如果是这种情况,您需要将其更改为:

%// initialize filename increment
persistent counter;
if isempty(counter)
    counter = 1; end

vid = videoinput('winvideo', 2);
set(vid, 'ReturnedColorSpace', 'RGB');
img = getsnapshot(vid);
imshow(img);

%// this is where and what your image will be saved
savename = [...
    'C:\Users\Sony Vaio\Documents\Task\images\image_', ...
    num2str(counter), '.jpg']; 
imwrite(img, savename);

%// counter should increment each time you push the button
counter = counter + 1;  

或者,您可以检查实际存在的文件,并使用序列中的下一个逻辑文件名:

vid = videoinput('winvideo', 2);
set(vid, 'ReturnedColorSpace', 'RGB');
img = getsnapshot(vid);
imshow(img);

%// this is where and what your image will be saved
counter  = 1;
baseDir  = 'C:\Users\Sony Vaio\Documents\Task\images\';
baseName = 'image_';
newName  = [baseDir baseName num2str(counter) '.jpg'];
while exist(newName,'file')
    counter = counter + 1;
    newName = [baseDir baseName num2str(counter) '.jpg'];
end    
imwrite(img, newName);

答案 1 :(得分:0)

每次按下该按钮时,由于第一个语句,计数器值将重置为1:

counter = 1

因而错误。

counter = length(dir('*.jpg')) + 1; %Counts the number of .jpg files in the directory

那应该做的。

答案 2 :(得分:0)

查希尔: 我是在线程序,关于图像处理和图像采集从相机写作MATLAB。 每隔几秒钟收到图像,我会得到一张相机的照片。 必须在统计过程控制图表中存储和处理照片。 当图像采集程序后的第一张图像挂起并停止时。 请编码从相机在线每隔10秒获取图像,发送可用于统计过程控制的图像。 感谢