Как сохранить изображение, сгенерированное imshow(изображение), в переменную?
Это мой код Я хочу сохранить изображение, отображаемое на imshow(img), в переменную, чтобы использовать его позже. Спасибо!
img=imread('image1.bmp');
figure(1), imshow(img);
[r c]=ginput(4);
Bw=roipoly(img,r,c);
% figure,imshow(Bw)
[R C]=size(Bw);
for i=1:R
for j=1:C
if Bw(i,j)==1
img(i,j)=img(i,j);
else
img(i,j)=0;
end
end
end
figure,
imshow(img); title ('Output Image');
1 ответ
Вы можете использовать классический getframe / cdata
идиома. С открытым окном рисунка просто сделайте это:
figure;
imshow(img); title('Output Image');
h = getframe;
im = h.cdata;
h
дескриптор текущего кадра, который открыт, и cdata
поле содержит данные изображения для кадра. Приведенный выше код сохраняет данные изображения кадра в переменную с именем im
для использования на потом.
Незначительный комментарий
Тот for
Код цикла для установки вывода немного неэффективен. Вы можете сделать это полностью векторизованным, и вы заметите значительное ускорение.
Этот код:
for i=1:R
for j=1:C
if Bw(i,j)==1
img(i,j)=img(i,j);
else
img(i,j)=0;
end
end
end
... можно заменить на:
img(~BW) = 0;
Я также не понимаю, почему вам нужно хранить данные изображения в рамке imshow
... когда img
уже содержит ваши данные, и вы в конечном итоге показывает данные, содержащиеся в img
, Почему ты не можешь просто использовать img
непосредственно для вашего приложения? Тем не менее, вышеуказанное решение будет работать.