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 张图像。

就像每次按下按钮时它都会调用整个块代码。我希望你们能帮助我。我现在真的很困扰:(谢谢:)

4

3 回答 3

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);
于 2013-09-12T05:55:35.893 回答
0

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

计数器 = 1

因此错误。

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

那应该做的工作。

于 2014-05-23T09:19:24.930 回答
0

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

于 2017-01-10T18:20:45.287 回答