MATLAB - 某些文件夹中的imwrite错误

时间:2017-05-23 10:59:34

标签: matlab recording

这是我的第一个问题,所以我希望我写的是正确的地方。

我目前正在使用Grasshopper3相机,型号:Point Grey Research的GS3-U3-50S5M-C连接到MATLAB。 我一次以灰度记录大量帧,为了避免填满我的记忆,我希望在录制过程中将一些帧作为堆叠的TIFF移动到我的磁盘上。其他使用的程序需要堆叠的TIFF格式。

我是通过使用 getdata 将录制的帧从相机移动到工作区来实现的。这将创建一个 4-D uint8 对象,其中包含帧的高度,宽度,颜色平面和帧编号。为了将帧保存为堆叠的TIFF,我使用 for 循环与 imwrite 一次保存一帧,如下所示。但是,当我这样做时,我经常会收到错误:

使用imwrite时出错(第454行)无法打开文件" C:\ Users \ My_User \ Desktop \ CraneStuff3 \ Name.tif"写作。您可能没有写入权限。

当发生这种情况时,MATLAB通常会保存一些帧,例如:如果我记录了500帧,它可能会在给我错误之前节省300帧。有时它设法保存每一帧没有错误,有时它只会在失败前节省30帧。我不明白如何保存一些帧然后声称它无法打开文件进行写入。

但是,我注意到,如果我将文件保存在" C:\ Users \ My_User \ Documents \ MATLAB" 中,它似乎永远不会出现任何错误并保存每一帧都是想要的。

有谁知道为什么会这样或我如何解决我的问题? 我在下面列出了我的代码。

注意:我尝试将帧保存为.mat文件。要做到这一点,我必须使用版本' -v7.3'在保存

谢谢你提前。

% Connect to camera:
vid = videoinput('pointgrey',1,'F7_Mono8_2448x2048_Mode0');
vid.TriggerRepeat = 100;
vid.FrameGrabInterval = 1;

% Make a recording:
start(vid)
pause(50)
stop(vid)

% Get data from camera to workspace:
data = getdata(vid,vid.FramesAvailable);

% Save data to disk one image at a time:
num = size(data);
output_name = fullfile('C:\Users\My_User\Desktop\CraneStuff3', ['Name' '.tif']);
for k = 1:num(4)
    imwrite(data(:,:,:,k),output_name,'WriteMode','append');
end

1 个答案:

答案 0 :(得分:-1)

一种可能的解决方案是尝试将每个帧分别保存到tiff文件中。

如果您保存.mat文件,请更好地使用savefast