Displaying frames in GUIDE

조회 수: 3 (최근 30일)
John
John 2014년 8월 29일
댓글: John 2014년 9월 6일
I have a necessity to display frames of a video in an axes object (or some other suitable alternative) with the requirement that the various frames can be rendered while maintaining the zoom in level of the axes object. Assume the frames are grayscale and have been stored into a 3 dimensional matrix, the index into the third dimension being used to index frames.
Calling imshow with the parent attribute set to the axes object of my choosing will display the frame. At this point I can use the zoom in controls to zoom into the image data. to display the next frame, my current code calls imshow again with the parent as the same axes object and the image data referenced from the aforementioned 3D array. HOWEVER, the call to imshow resets the zoom, which I believe is set through the XLim and YLim properties of the axes object.
Assuming you have such a 3D array with the frame data for the video, how would you display subsequent frames while maintaining the zoom of the Axes object before the call to imshow?
Something tells me I should keep XLim and YLim of the Axes object untouched and just replace the CData with the data for the new frame. Is this the most effective way to do this?

채택된 답변

Image Analyst
Image Analyst 2014년 8월 29일
You should be able to set "hold on". However that may "pile up" all the images and you could eventually run out of memory. So you might have to call getimage() and delete any existing image object in the axes before calling imshow() to display the next frame. Don't call "cla reset" as it will reset the zoom. You can check whether "cla" by itself will reset the zoom - I don't know.
  댓글 수: 4
John
John 2014년 8월 29일
Thank you very much Image Analyst.
John
John 2014년 9월 6일
This question has been answered. But reading through the MATLAB documentation, it seems the NextPlot property of Axes can help me achieve the desired effect without having to manipulate CData of the Image . My original problem was that calling the high level image show function, imshow , would cause the Axes properties like XLim and YLim and others which determine the zoom level, to be reset upon subsequent requests for imshow to plot on the same Axes object. It appears setting the NextPlot property of the Axes to ReplaceChildren will preserve those zoom level determining Axes properties between calls to imshow
I imagine setting CData is more efficient and might be a better option if timer objects are being used to play real time video since this would bypass the gauntlet of decision making imshow uses to set things straight
......Just putting it here in case anyone else needs another solution to the original problem......

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Specifying Target for Graphics Output에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by