Сохранение содержимого рисунка в матрицу в Matlab (без использования getframe и без сохранения в файл) - PullRequest
1 голос
/ 03 апреля 2012

Функция getframe захватывает все, что видно на экране. Однако в моем приложении я хочу, чтобы при сохранении его содержимого в матрице эта цифра была невидимой . Итак, что делает getframe, так это то, что на короткое время он делает фигуру видимой и захватывает ее содержимое, а затем устанавливает свойство visibile обратно на то, что было до захвата экрана. Я не хочу, чтобы вспышка происходила на экране. Кроме того, сохранение в файле и чтение его обратно снижает скорость. Должен быть способ обойти это.

hFig=figure('Visible','off'')
text ('String','ABC','fontsize',300)
imageData = getframe(hFig);       
img = imageData.cdata; % img is what I am interested in

1 Ответ

2 голосов
/ 03 апреля 2012

Единственный способ, которым я знаю, это напечатать рисунок во временный файл.Например:

%Create a figure
hFig=figure('Visible','off')
text ('String','ABC','fontsize',300)

%Save the figure to a tiff file using a salted name
tmpName = sprintf('Temp_Figure_%04d.tiff', floor(rand*1000));
print(['-f' num2str(hFig)], '-dtiff', tmpName)

%Read the data
img = imread(tmpName);

%Delete the temporary figure
delete(tmpName);

Не самая красивая вещь, но, кажется, работает.

...