预览视频饲料使用冲浪

1视图(30天)
皮特
皮特 2019年12月4日
回答: 皮特2019年12月6日
你好,
我有gige相机,使用Matlab来创建gui和一些控制功能/相机图像处理按钮。
使用下面的
形象=预览(VidObj);
ExtractedFrame = Image.CData;
我已经能够得到的视频绘制3 d数据就是我在找的。
然而,预览窗口(小窗口,也显示视频流)总是存在,往往是占主导地位的活动。
这是最好的但我认为因为它总是可见的(这是活动窗口的gui图),它是拿走控制gui。
我添加了滑块控制视角(这将是更好的使用“冲浪”,点击旋转和旋转图像,但这是我所需要的东西。
我挣扎是调节相机曝光——它目前设置的
uicontrol (“风格”,“编辑”,)
这是理想的情况下我怎么想,但是VideoPreview窗口总是保持专注,所以我不能强调“编辑”的曝光时间价值(不能得到足够长的时间的GUI活跃)
但与额外的按钮和gui控件是我领导,并使用预览(VidObj)只能让这是一个2 d图像(我想看到山峰附加截图所示)
还可以看到我的控制——改变colormap(“彩虹”=喷射),控制min和max Z,曝光,然后滑块控制冲浪的情节的“视图”的形象。
我也做更多的图像处理,可以导出图像显示(底部),找到特定Z上的相机值(峰值检测)和应用Z的阈值
Z (Z <打)= 0
通过按按钮底部的GUI
我打算添加更多,但整理冲浪(图片)预览(VidObj)可能会最快的方法处理这个问题(和进一步的问题? !)
我也包括我的主要代码处理的相机采集
函数DisplayCameraFeed (~ ~)
VidObj = videoinput (“gige”);
VidObj。SelectedSourceName =“input1”;
(~)=预览(VidObj);%重要的初始化摄像头!
GUI_Handles.Toggle_MAIN.Value
NthFrame = NthFrame + 1;
% %本节的相机设置
VideoProperties = (VidObj);
CameraProperties = getselectedsource (VidObj);%增加20191204;访问功能,如相机曝光等
% VideoProperties。预览=“关闭”;%试图把主要的预览窗口,没有工作!
CameraProperties。ExposureTime = str2double (GUI_Handles.Text_SetExposure.String);%提取处理(它是一个字符串)
% %现在我们准备从摄像头获取图像,并做任何潜在的处理
形象=预览(VidObj);
ExtractedFrame = Image.CData;
%检查冲浪/网格能够显示图像好(灰度)
开关尺寸(ExtractedFrame, 3)
情况下1%不需要改变
情况下3%让RGB2Gray
ExtractedFrame = rgb2gray (ExtractedFrame);
否则%哦亲爱的!
键盘;
结束
GUI_Handles。GlobalCell {2,4} = ExtractedFrame;%存储图像
如果GUI_Handles.Toggle_Slicing.Value%只需要上面的切片图像阈值
Toggle_Slicing;
ExtractedFrame = GUI_Handles。GlobalCell {2,4};
结束
% %显示图像的。
冲浪(flipud (ExtractedFrame));% Matlab翻转冲浪的阴谋
阴影;
;
SetColorMap;
SliderCheck;
甘氨胆酸轴=;
轴。位置= (0.25,0.25,0.7,0.7);
AXES.XAxis。可见=“关闭”;
AXES.YAxis。可见=“关闭”;
轴。这一= [GUI_Handles.Slider_Z_Min。价值,GUI_Handles.Slider_Z_Max.Value];
轴。(GUI_Handles.Slider_Z_Min ZLim =。价值,GUI_Handles.Slider_Z_Max.Value];
轴。= [GUI_Handles.Slider_Angle_Azimuth视图。价值,GUI_Handles.Slider_Angle_Elevation.Value];
AXES.XLabel。字符串= sprintf (“X”);
AXES.YLabel。字符串= sprintf (“Y”);
轴。XGrid =“关闭”;
轴。YGrid =“关闭”;
轴。ZGrid =“关闭”;
% %添加峰值检测:
drawnow;
持有;
Toggle_PeakDetector;
% drawnow;
持有;
结束
stoppreview (VidObj)
结束
谢谢你的帮助:)
1评论
皮特
皮特 2019年12月4日
编辑:皮特 2019年12月4日
我还在调查,想知道如果我可以使用类似
ExtractedFrame = getdata (VidObj)
ExtractedFrame = peekdata (VidObj, 1)
不断一点一点的GUI的图片直播吗?
但为了实现这些,我没有成功的最终目标!
getsnapshot (VidObj)
几乎是在那里,但是我不认为这是响应够我想做什么(在上面的代码中,我也改变了线路12和13使用吗
形象=预览(vidobj)
ExtractedImage = Image.CData
开始(VidObj)
再次,任何更多的帮助在这将不胜感激!

登录置评。

接受的答案

皮特
皮特 2019年12月6日
排序——手动设置,见下面的10行。只需要为任何人做一些挖掘感兴趣。
下面让我调试在macbook pro (facetime相机)和使用linux上的gige相机。帧率有点淋浴比我们想(6 fps)但很有用。
解决方案:
函数DisplayCameraFeed (~ ~)
NthFrame = 0;
如果ismac
VidObj = videoinput (“macvideo”);% 20191204 - Mac添加相机使用。这应该允许调试的所有功能(包括接触等)
其他的
VidObj = videoinput (“gige”);
结束
VidSrc = getselectedsource (VidObj);
triggerconfig (VidObj“手动”);% 20191205;https://uk.mathworks.com/help/imaq/examples/acquiring-a-single-image-in-a-loop.html
开始(VidObj);
GUI_Handles.Toggle_MAIN.Value
如果~国防部(NthFrame, 3)
开始时间=抽搐;
结束
如果~包含(VidObj.Name“macvideo”)
ExposureTime = str2double (GUI_Handles.Input_SetExposure.String);
VidSrc。ExposureTime = ExposureTime;
结束
NthFrame = NthFrame + 1;
ExtractedFrame = getsnapshot (VidObj);
开关尺寸(ExtractedFrame, 3)
情况下1%不需要改变
情况下3%让RGB2Gray
ExtractedFrame = rgb2gray (ExtractedFrame);
否则%哦亲爱的!
键盘;
结束
如果GUI_Handles.Toggle_Slicing.Value%只需要上面的切片图像阈值
GUI_Handles。GlobalCell {2,4} = ExtractedFrame;
Toggle_Slicing;
ExtractedFrame = GUI_Handles。GlobalCell {2,4};
结束
% %显示图像的。
SetColorMap;
如果GUI_Handles.Slider_Angle_Elevation。值= = 90
显示亮度图像(ExtractedFrame);
甘氨胆酸轴=;
其他的
冲浪(flipud (ExtractedFrame));% Matlab翻转冲浪的阴谋
阴影;
;
甘氨胆酸轴=;
轴。(GUI_Handles.Slider_Z_Min ZLim =。价值,GUI_Handles.Slider_Z_Max.Value];
结束
SliderCheck;
轴。位置= (0.25,0.25,0.7,0.7);
AXES.XAxis。可见=“关闭”;
AXES.YAxis。可见=“关闭”;
轴。这一= [GUI_Handles.Slider_Z_Min。价值,GUI_Handles.Slider_Z_Max.Value];
轴。= [GUI_Handles.Slider_Angle_Azimuth视图。价值,GUI_Handles.Slider_Angle_Elevation.Value];
AXES.XLabel。字符串= sprintf (“X”);
AXES.YLabel。字符串= sprintf (“Y”);
轴。XGrid =“关闭”;
轴。YGrid =“关闭”;
轴。ZGrid =“关闭”;
SetColorMap;
CBAR = colorbar;
drawnow;
% %添加峰值检测:
如果GUI_Handles.Toggle_PeakDetector.Value
持有;
Toggle_PeakDetector;
持有;
结束
如果~国防部(NthFrame, 3)
GUI_Handles。GlobalCell {2,4} = ExtractedFrame;
TimeTakenForNFrames = toc(开始时间);
TimePerFrame = TimeTakenForNFrames / 3;
帧速率= 1 / TimePerFrame;
集(GUI_Handles.Label_FrameRate,“字符串”sprintf (的帧率= % 0.2 f '帧速率);
结束
结束
停止(VidObj);
结束

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!