matlab - 流式传输网络摄像头时图形不断闪烁
matlab - figure keeps blinking when streaming webcam
我首先创建了一个图形来将网络摄像头图像传输到它上面。然后我在从网络摄像头流式传输时在图形上创建了一个 3D 轴。请注意,网络摄像头帧流并未设置在 3D 轴内,而是设置在图本身的 3D 轴外。问题是由于 uistack(ah,'bottom')
功能,当我流式传输网络摄像头时,数字一直在闪烁。我需要这个函数来将 3D 轴 ah
保持在流图形背景 frame
之前。
如您所见,我正在使用网络摄像头播放苹果。由于 uistack(ah,'bottom')
函数,您还可以看到 3D 轴位于背景的前面。如果我不使用这个功能,3D轴会隐藏在背景后面。
% turn on webcam
camList = webcamlist;
cam = webcam(camList{1});
% stream webcam
while(1)
frame = snapshot(cam);
ah = axes('unit','normalized','position',[0 0 1 1]);
imagesc(frame)
drawnow
set(ah,'handlevisibility','off','visible','off','Clipping','off')
uistack(ah,'bottom')
end
我解决了问题。
您需要定义两个轴:(i) 一个用于流图像 az
和 (ii) 另一个用于静态图像 ah
outside 的循环。此外,将 uistack
函数 放在 之外,因为告诉程序在每个循环中将 ah
保持在 az
轴的顶部是多余的。
camList = webcamlist;
cam = webcam(camList{1});
hold on
az = axes('unit','normalized','position',[0 0 1 1]);
ah = axes('unit','normalized','position',[0 0 1 1]);
uistack(ah,'top')
while(1)
frame = snapshot(cam);
imagesc(az,frame)
drawnow
end
我首先创建了一个图形来将网络摄像头图像传输到它上面。然后我在从网络摄像头流式传输时在图形上创建了一个 3D 轴。请注意,网络摄像头帧流并未设置在 3D 轴内,而是设置在图本身的 3D 轴外。问题是由于 uistack(ah,'bottom')
功能,当我流式传输网络摄像头时,数字一直在闪烁。我需要这个函数来将 3D 轴 ah
保持在流图形背景 frame
之前。
如您所见,我正在使用网络摄像头播放苹果。由于 uistack(ah,'bottom')
函数,您还可以看到 3D 轴位于背景的前面。如果我不使用这个功能,3D轴会隐藏在背景后面。
% turn on webcam
camList = webcamlist;
cam = webcam(camList{1});
% stream webcam
while(1)
frame = snapshot(cam);
ah = axes('unit','normalized','position',[0 0 1 1]);
imagesc(frame)
drawnow
set(ah,'handlevisibility','off','visible','off','Clipping','off')
uistack(ah,'bottom')
end
我解决了问题。
您需要定义两个轴:(i) 一个用于流图像 az
和 (ii) 另一个用于静态图像 ah
outside 的循环。此外,将 uistack
函数 放在 之外,因为告诉程序在每个循环中将 ah
保持在 az
轴的顶部是多余的。
camList = webcamlist;
cam = webcam(camList{1});
hold on
az = axes('unit','normalized','position',[0 0 1 1]);
ah = axes('unit','normalized','position',[0 0 1 1]);
uistack(ah,'top')
while(1)
frame = snapshot(cam);
imagesc(az,frame)
drawnow
end