If this is your code then of course you will only have shown the first picture, since there is no loop to show the new image. Your code gets the video input, set different camera settings, starts the video, get the data one time and displays them.
Now if you want to show the new data you will have to repeat the process of getting the data and show them again.
Is it important to show only one image every 1 second? Because if not you could just run a loop and show a new image when your code is done.
Something like:
vid = videoinput('winvideo', 1)
set(vid,'FramesPerTrigger',1)
set(vid,'TriggerRepeat',Inf)
FrameGrabInterval = 10
start(vid)
FrameCounter = 0;
while(FrameCounter<1000)
FrameCounter=FrameCounter+1;
img=getdata(vid)
imshow(img)
end
This loop runs for 1000 frames. Now if you only want a new frame every 1 second you could just add a pause into the loop with "pause = 1;", you could design your loop with a different condition to take a picture... There are a few options to achieve this.
EDIT: Depending on your camera (webcam? wlan-cam? something else?) you could also work with a video player object. You then take a picture and step it through the video player.