Getframe function problem: Captured Image will not re-display at same size
이전 댓글 표시
goal: I want to be able to capture the color by pixel location data (C-data?) of any current figure, scramble the locations of any black pixels in it, and then re-display the figure in scrambled form.
problem: After scrambling the figure and re-displaying it, it is now a different size than the old figure. I want it to be the same size as the unscrambled version.
I think the problem lies in how I am capturing and then displaying the image. This is how I am doing that: (after creating a current figure). Attached is a screenshot of the problem for clarity. I am running 2015a.
function[CurrentFigureData, CurrentFigureMap]= WriteCF2Workspace()
F = getframe(gcf);
[CurrentFigureData, CurrentFigureMap] = frame2im(F);
end
figure(2);ScreenDims = get(0, 'ScreenSize'); set(2,'position',ScreenDims, 'menubar','none'); image(CurrentFigureData); axis off;
댓글 수: 2
Image Analyst
2015년 10월 3일
Why not just use an axes control with an image in it, instead of trying to do the whole figure?
Michael Bronstein
2015년 10월 3일
답변 (2개)
Walter Roberson
2015년 10월 3일
curfig = gcf;
curfig_units = get(curfig, 'units');
curfig_size = get(curfig, 'Position');
curimage_h = findall(curfig, 'type', image');
curax = ancestor(curimage_h, 'axes');
fig2 = figure('Units', curfig_units, 'Position', curfig_size);
ax2 = copyobj(curfig_ax, fig2);
image2 = copyobj(curimage_h, ax2);
댓글 수: 7
Michael Bronstein
2015년 10월 3일
Walter Roberson
2015년 10월 4일
curfig = gcf;
curfig_units = get(curfig, 'units');
curfig_size = get(curfig, 'Position');
curimage_h = findall(curfig, 'type', image');
curax = ancestor(curimage_h, 'axes');
fig2 = figure('Units', curfig_units, 'Position', curfig_size);
ax2 = copyobj(curax, fig2);
image2 = copyobj(curimage_h, ax2);
Michael Bronstein
2015년 10월 4일
yuval
2018년 8월 8일
Hi Michael, I'm facing similar difficulty, were you able to figure it out?
Michael Bronstein
2018년 8월 8일
Michael Bronstein
2018년 8월 8일
Michael Bronstein
2018년 8월 8일
yuval
2018년 8월 8일
0 개 추천
Replace gcf with gca, i.e.,
F = getframe(gca); [CurrentFigureData, CurrentFigureMap] = frame2im(F);
카테고리
도움말 센터 및 File Exchange에서 Image Arithmetic에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!