How can I add a histogram to a live video preview?
1 回表示 (過去 30 日間)
古いコメントを表示
Hi I'm working on a project where I've created a custom GUI and connected the axes (axes1) to an external camera when a button is pushed and on the same button push a live histogram of the preview image should come up in a different axes. I have gotten the preview to appear and the histogram to appear, however, the histogram does not update itself automatically when the preview image is changed. I've tried everything and need a direction to go on with this. Here's my code below for just the button I'm trying to get working:
function pushbutton1_Callback(hObject, eventdata, handles)
handles = guidata(hObject);
imaqmex('feature', '-previewFullBitDepth', true);
axes(handles.axes1)
vid = videoinput('Camera_source_1', 1, 'MONO16_BIN2x2_1024x1024_SlowMode');
src = getselectedsource(vid);
vidres = vid.VideoResolution;
imWidth = vidres(1);
imHeight = vidres(2);
nBands = vid.NumberOfBands;
himage = image(zeros(imHeight,imWidth, nBands), 'Parent', handles.axes1);
figSize = get(handles.axes1, 'Position');
figWidth = figSize(3);
figHeight = figSize(4);
gca.unit = 'pixels';
gca.position = [((figWidth - imWidth)./2)...
((figHeight - imHeight)./2)...
imWidth imHeight];
vid.FramesPerTrigger = Inf;
src.ExposureTime = user_val(1);
im = preview(vid, himage);
ax = im.Parent;
im.CDataMapping = 'scaled';
colormap(ax, gray);
signalRange = [30 2000];
ax.CLim = signalRange;
axes(handles.axes2)
himage.CData = im.CData;
set(himage, 'CData', im.CData);
imhist(himage.CData, 128)
grid on
grid minor
drawnow
preview(vid, himage)
guidata(hObject, handles);
0 件のコメント
採用された回答
Image Analyst
2018 年 7 月 21 日
I think you're going to have to get a snapshot with getsnapshot() and then histogram that.
3 件のコメント
Image Analyst
2018 年 7 月 23 日
I think you might have to not use preview and just have getsnapshot() and imhist() in a loop. So it's not "live" anymore but a series of snapshots, hopefully the histogramming won't slow it down too much and it will look "live". You might want to do the histogram only every 10 snapshots or so to speed it up.
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!