A. 新人求助,matlab調用攝像頭
這個程序在win 7 matlab 2013b上運行成功。但在win8.1和win10 matlab 2014a和2014b上運行會報錯,,給你參考參考吧!
程序的功能是調用電腦自帶的攝像頭實現圖像採集,拍照,錄像。
vid=videoinput('winvideo');
set(vid,'TriggerRepeat',inf);
h=figure('units','normalized','menubar','none','numbertitle','off');
ha=axes('parent',h,'units','normalized','position',[.005 .7 .99 .925]);
axis off;
hb=uicontrol('parent',h,'units','normalized'碼做鍵,'position'胡悶,[.01 .1 .199 .6],'string','Preview','callback',...
['hf=figure(''units'',''normalized'',''menubar'',''none'',''numbertitle'',''off'');'...
'axes(''parent'',hf,''units'',''normalized'',''position'',[.005 .007 .99 .99]);'...
'objRes=get(vid, ''VideoResolution'');'...
'nBands=get(vid,''NumberOfBands'');'...
'hImage=image(zeros(objRes(2),objRes(1),nBands));'...
'preview(vid,hImage);']);
hb1=uicontrol('parent',h,'units','normalized','position',[.604 .1 .198 .6],'string','Play','callback',...
['mplay(''video.avi'');'...
'pause(0.1);play(R);']);
bs=uicontrol('parent',h,'units','normalized','position',[.208 .1 .198 .6],'string','Save','callback',...
['C=questdlg(''確定保存'',''保存'',''Y'',''N'',''Y'');'...
'if C==''Y'''...
'mov=avifile(''video.avi'',''fps'',20);'...
'R=audiorecorder(44100,24,2);'...
'for i=1:80'...
'F=getframe(hf);'...
'mov=addframe(mov,F);'...
'record(R);'...
'pause(0.05);'...
'end;'...
'stop(R);mov=close(mov);'...
'msgbox(''Succeed saving!!'');'...
'end;']);
hd=uicontrol('parent',h,'units','normalized','position',[.406 .1 .198 .6],'string','Photoing','callback',...
['ph=getsnapshot(vid);'...
'figure(3);'...
'imshow(ph);'...
'c=questdlg(''是否保存'',''保存'',''Y'',''N'',''Y'');'...
'if c==''Y'''遲巧...
'imwrite(ph,''photo.png'');'...
'end;']);
hc=uicontrol('parent',h,'units','normalized','position',[.802 .1 .198 .6],'string','Delete','callback',...
['cc=questdlg(''確定要刪除文件'',''刪除'',''Y'',''N'',''Y'');'...
'if cc==''Y'''...
'try '...
'delete(''video.avi'');'...
'delete(''photo.png'');'...
'end;'...
'end']);
hl=uicontrol('parent',h,'units','normalized','position',[.01 .05 .09 .05],'string','Close','callback',...
['try '...
'close(h);'...
'close(hf);end']);
B. 新人求助,matlab調用攝像頭
你可以搜索一下關於matlab 圖像採集工具箱。
我以前用CCD就是這么用的 網上找的源唯一段:
Matlab中的圖像獲取工具箱給我們提供了必要的函數,我們直接調用就可以了。在在這帖中我們主要就是簡單的介紹如何使用該工具箱進行對USB2.0攝像頭的編程
廢話不多說,我們開始言歸正傳了。但是一定記住你必須安裝了PC攝像頭才可以進行下面的東西,如果說首次安裝攝像頭最好重啟下PC,否則可能出現沒法識別攝像頭。
整個過程我們需要做如下幾件事情:
1、查詢USB2.0Camera 的具體參數(imaqhwinfo)
2、創建視頻輸入對象(videoinput)
3、圖像預覽和顯示(preview、stoppreview、closepreview和image)
4、獲取視頻圖像和橡(getsnapshot)
5、圖像獲取設備的獲取和設置(get和set)
6、關閉視頻對象(delete)
在正式講解之前,我想說明下幾個個在圖像獲取工具箱中的術語:
圖像獲取設備:比如攝像頭、掃描儀
圖像獲取適配器:主要的目的是通過驅動在Matlab和圖像獲取設備之間傳遞信息
ROI:region-of-interest 感興趣區域
在說說幾個常用的函數,我們這里只是說明它的作用,具體如何使用參考幫助系統
getselectedsource
imaqfind
isvalid
peekdata
getdata
imaqmontage
給我們一個攝像頭我們必須知道他的相關參數,才雹棚培可能進行我們的編程下。當然我們可以查詢商家手冊,但是那個累不累人呀。
Matlab的圖像獲取工具箱為我提供了imaqhwinfo(),來獲取PC上以安裝的圖像獲取硬體信息
沒有輸入參數時,返回一個結構體, 它包含了系統中存在的適配器和Matlab相關的版本信息(第一次我們一般使用這個)
代碼:
>> info=imaqhwinfo
info =
InstalledAdaptors: {'coreco' 'winvideo'}%這里可以看到我的PC上安裝了兩個適配器
MATLABVersion: '7.6 (R2008a)'
ToolboxName: 'Image Acquisition Toolbox'
ToolboxVersion: '3.1 (R2008a)'
C. 新人求助,matlab調用攝像頭
打開Matlab軟體
在命令窗口中輸入 edit Camera 會打開笑扮叢代碼編輯窗口
復制如下語句到上面窗口中:
%獲得缺羨設備信息
imaqhwinfo
obj = videoinput('winvideo');
set(obj, 'FramesPerTrigger', 1);
set(obj, 'TriggerRepeat', Inf);
%定義一個監控界面
hf = figure('Units', 'Normalized', 'Menubar', 'None','NumberTitle', 'off', 'Name', '實時拍照系統');
ha = axes('Parent', hf, 'Units', 'Normalized', 'Position', [0.05 0.2 0.85 0.7]);
axis off
%定義兩個按鈕控制項
hb1 = uicontrol('Parent', hf, 'Units', 'Normalized','Position', [0.25 0.05 0.2 0.1], 'String', '預覽', 'Callback', ['objRes = get(obj, ''VideoResolution'');' ...
'nBands = get(obj, ''NumberOfBands'');' ...
'hImage = image(zeros(objRes(2), objRes(1), nBands));' ...
'preview(obj, hImage);']);
hb2 = uicontrol('Parent', hf, 'Units', 'Normalized','Position', [0.55 0.05 0.2 0.1], 'String', '拍照', 'Callback', 'imwrite(getsnapshot(obj), ''im.jpg'')');
運行後界面如下,可碰櫻以實現拍照功能
這樣我們實現了MATLAB的拍照
這樣我們可以在程序中添加它的各種軟體中了
D. 如何在matlab中設置usbhub連接並打開多個攝像頭
1.如果把四個攝像頭分別插在電腦的四個USB口,可以同時預覽兄察四個攝像頭的畫面
2.用USB HUB連接之後,matlab可以識別亂兆四個攝像頭,並且可以設置每個攝像頭的對嘩塵租象
3.每次都能開啟一個攝像頭進行預覽,然後就打不開其他的了。
4.用matlab打開並預覽一個攝像頭的畫面之後。不管是用matlab 還是其他的軟體,都無法開啟第二個攝像頭
5.hub是 UNITEK 的USB3.0 4介面,可以單獨供電。
E. 新人求助,matlab調用攝像頭
首先確定安裝好了攝像頭的驅動,打開「應用程序」>「image acquisition」查看
新建圖形用戶界面:「新建」>「圖形用戶界面銷遲」
從左側選擇控制項,添加到面板
雙擊空間進行屬性設置,「string」為顯示名稱,「tag」為id。將兩個axes的「visable「屬性設置為」off「
更改」.m「文件:
function varargout = untitled1(varargin)
% UNTITLED1 MATLAB code for untitled1.fig
% UNTITLED1, by itself, creates a new UNTITLED1 or raises the existing
% singleton*.
%
% H = UNTITLED1 returns the handle to a new UNTITLED1 or the handle to
% the existing singleton*.
%
% UNTITLED1('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in UNTITLED1.M with the given input arguments.
%
% UNTITLED1('Property','Value',...) creates a new UNTITLED1 or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before untitled1_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to untitled1_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
虧山李% Edit the above text to modify the response to help untitled1
% Last Modified by GUIDE v2.5 12-Mar-2015 20:53:43
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
唯粗gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @untitled1_OpeningFcn, ...
'gui_OutputFcn', @untitled1_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before untitled1 is made visible.
function untitled1_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to untitled1 (see VARARGIN)
% Choose default command line output for untitled1
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes untitled1 wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = untitled1_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
global vid;
vid = videoinput('winvideo');
%set(vid,'ReturnedColorSpace','grayscale');
function pushbutton1_Callback(hObject, eventdata, handles)
axes(handles.axes1);
global vid;
vidRes = vid.VideoResolution;
nBands = vid.NumberOfBands;
hImage = image( zeros(vidRes(2), vidRes(1), nBands) );
preview(vid, hImage);
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
axes(handles.axes2);
global vid;
f=getsnapshot(vid);
imshow(f);
6
點擊運行,單擊」preview「進行預覽,單擊」snapshot「捕獲圖像
F. 如何利用Matlab進行usb攝像頭的控制
這個好解決,你外接的攝像頭之所以不能用是因為電腦悔態裡面有兩個攝像頭,系統默認使用筆記本自帶的攝像頭,你打開【控制面板】,找到【硬體和聲音】選項,在第一行【設備和列印機】下面找到【設備管理】選項卡並打開兄前虛,你會發現在【圖像設備】裡面有兩個驅動(一個是你自帶攝像頭驅動,一個是你外置攝像頭驅動),你把自帶的攝像頭驅動給禁用了,一般第一個驅動是自帶羨燃的攝像頭驅動,滑鼠放到驅動上點擊右鍵,選擇禁用,就行了