У меня есть .binary файл, содержащий данные глубины от датчика kinect.Преобразование двоичного файла в изображение
Я пытаюсь пройти через .binary файл и вернуть фактическое изображение в MATLAB. Так что это программа MATLAB, что я придумал:
fid = fopen('E:\KinectData\March7Pics\Depth\Depth_Raw_0.binary');
col = 512; %// Change if the dimensions are not proper
row = 424;
frames = {}; %// Empty cell array - Put frames in here
numFrames = 0; %// Let's record the number of frames too
while (true) %// Until we reach the end of the file:
B = fread(fid, [col row],'ushort=>ushort'); %// Read in one frame at a time
if (isempty(B)) %// If there are no more frames, get out
break;
end
frames{end+1} = B.'; %// Transpose to make row major and place in cell array
numFrames = numFrames + 1; %// Count frame
imwrite(frames{numFrames},sprintf('Depth_%03d.png',numFrames));
end
%// Close the file
fclose(fid);
frm = frames{1};
imagesc(frm)
colormap(gray)
выше программа работает нормально, но это не дало бы мне все Thats изображение выше 99. То есть, я бы обрабатывать .binary файл и последнее изображение, которое я получил, - Depth_099.png, хотя полное видео имеет больше, чем это.
Кто-нибудь знает y? Спасибо
Почему бы вам просто не использовать% 04d, если вам нужно больше цифр? % 03d ограничивает имя файла на 3 цифры и заполнение 0. –
Этот код содержится в более длинном цикле while, который выполняет итерацию по номеру кадра? Не могли бы вы разместить весь код, если так? – eigenchris
Да, я пробовал это, но, к сожалению, повышение точности не работает. И нет, это не внутри цикла while. –