matlab usb cam,Matlab環境下使用USB2.0攝像頭編程image acquisition tools(讀書筆記) | 學步園...

(1)Matlab環境下使用USB2.0攝像頭編程

Matlab中的圖像獲取工具箱給我們提供了必要的函數,我們直接調用就可以了,主要就是簡單的介紹如何使用該工具箱進行對USB2.0攝像頭的編程。

TAG: USB攝像頭? Matlab

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

查詢USB2.0Camera的具體參數

給我們一個攝像頭我們必須知道他的相關參數,才可能進行我們的編程下。當然我們可以查詢商家手冊,但是那個累不累人呀。

Matlab的圖像獲取工具箱為我提供了imaqhwinfo(),來獲取PC上以安裝的圖像獲取硬件信息

沒有輸入參數時,返回一個結構體, 它包含了系統中存在的適配器和Matlab相關的版本信息( 第一次我們一般使用這個)

>> info=imaqhwinfo

info =

InstalledAdaptors: {'coreco'?'winvideo'}%這里可以看到我的PC上安裝了兩個適配器

MATLABVersion: '7.6 (R2008a)'

ToolboxName: 'Image Acquisition Toolbox'

ToolboxVersion: '3.1 (R2008a)'

復制代碼

有輸入參數的時候,返回一個結構體,包含了指定的適配器的數據信息

>> win_info=imaqhwinfo('winvideo')%我們看看第二適配器的具體參數

win_info =

AdaptorDllName: [1x81 char]%適配器dll文件絕對路徑

AdaptorDllVersion: '3.1 (R2008a)'%適配器dll文件版本

AdaptorName: 'winvideo'%適配器名稱

DeviceIDs: {[1]}%設備ID號,這個我們經常需要用到

DeviceInfo: [1x1 struct]%設備信息,這里主要是圖像獲取設備的一些參數,比較重要

%====================下面我們了解下,這個圖像獲取設備到底有哪些的詳細信息吧====================

>> win_info.DeviceIDs

ans =

[1]

>> dev_win_info=win_info.DeviceInfo

dev_win_info =

DefaultFormat: 'RGB24_320x240'%獲取圖片的默認格式

DeviceFileSupported: 0

DeviceName: 'USB PC CAMERA P227'%設備名稱

DeviceID: 1%設備號

ObjectConstructor: 'videoinput('winvideo', 1)'%對象構建方式,這個絕大部分都是一樣的

SupportedFormats: {1x12 cell}%獲取的圖像支持格式,一般都有好多種,上面的DefaultFormat只是默認格式而已

%==================================看看圖像獲取設備支持的圖像格式==================================

>> dev_win_info.SupportedFormats%可以看到我的PC上的攝像頭支持下面12中圖片格式

ans =

Columns 1 through 5

'I420_160x120'???'I420_176x144'???'I420_320x240'??? 'I420_352x288'??? 'I420_640x480'

Columns 6 through 9

'RGB24_1280x960'???'RGB24_160x120'??? 'RGB24_176x144'??? 'RGB24_320x240'

Columns 10 through 12

'RGB24_352x288'???'RGB24_640x480'??? 'RGB24_800x600'

視頻預覽、采集和保存

(1)創建視頻輸入對象

obj =videoinput(adaptorname,deviceID,format)

adaptorname:適配器名稱,首次可以使用不帶參數的imaqhwinfo函數獲取

deviceID:設備ID號,首次可以通過imaqhwinfo函數獲取

format:視頻采集格式,可以通過DeviceInfo的SupportedFormats獲取,不填寫則使用默認格式

>> obj =videoinput('winvideo',1,'RGB24_320x240')%這里我們使用默認的視頻采集格式

Summary of Video Input Object Using 'USB PCCAMERA P227'.

Acquisition Source(s):? input1 isavailable.

Acquisition Parameters:? 'input1'is the current selected source.

10 frames pertrigger using the selected source.

'RGB24_320x240'video data to be logged upon START.

Grabbing first ofevery 1 frame(s).

Log data to 'memory'on trigger.

Trigger Parameters:? 1 'immediate'trigger(s) on START.

Status:? Waiting for START.

0 frames acquiredsince starting.

0 frames availablefor GETDATA.

(2)打開視頻預覽窗口

himage=preview(obj,himage)

obj:視頻采集對象

himage:視頻預覽窗口對應的句柄,也就是說在指定的句柄對象中預覽視頻,該參數可以空缺

至于預覽窗口的關閉和停止可以使用colsepreview和stoppreview函數

vidRes = get(obj, 'VideoResolution');

nBands = get(obj, 'NumberOfBands');

figure()%指定預覽窗體顯示的figure

axes()%指定預覽窗口顯示的坐標系

hImage = image( zeros(vidRes(2), vidRes(1),nBands) );

preview(obj, hImage);

(3)圖像捕捉、顯示和保存

%frame是H×W×B的矩陣。H圖像高度,由ROIPosition指定;w圖像寬度,由ROIPosition指定;B索線個數,由NumberOfBands指定

frame = getsnapshot(obj);%獲取視頻的一幀

imshow(frame);%顯示獲取那一幀

imwrite(frame,'snap.jpg','jpg');

(2)

Matlab攝像頭數據采集

www.diybl.com????時間?:?2010-07-10??作者:網絡 ??編輯:huyang629點擊:??24?[?評論?]

1、??查詢USB2.0Camera 的具體參數

輸入 imaqInfo = imaqhwinfo

返回信息

InstalledAdaptors: {'winvideo'}

MATLABVersion: '7.1 (R14SP3)'

ToolboxName: 'Image Acquisition Toolbox'

ToolboxVersion: '1.9 (R14SP3)'

輸入imaqInfo.InstalledAdaptors

返回信息

ans =

'winvideo'

輸入winvideoinfo = imaqhwinfo('winvideo')

返回信息

winvideoinfo =

AdaptorDllName: [1x76 char]

AdaptorDllVersion: '1.9 (R14SP3)'

AdaptorName: 'winvideo'

DeviceIDs: {[1]}

DeviceInfo: [1x1 struct]

輸入 winvideoinfo.DeviceInfo

返回信息

ans =

DefaultFormat: 'YUY2_160x120'

DeviceFileSupported: 0

DeviceName: 'USB 視頻設備'

DeviceID: 1

ObjectConstructor: 'videoinput('winvideo', 1)'

SupportedFormats: {1x5 cell}

輸入device1 = winvideoinfo.DeviceInfo(1)

返回信息

device1 =

DefaultFormat: 'YUY2_160x120'

DeviceFileSupported: 0

DeviceName: 'USB 視頻設備'

DeviceID: 1

ObjectConstructor: 'videoinput('winvideo', 1)'

SupportedFormats: {1x5 cell}

輸入device1.DeviceName

返回信息

ans =

USB 視頻設備

輸入device1.DeviceID

返回信息

ans =

1

輸入device1.DefaultFormat

返回信息

ans =

YUY2_160x120

輸入device1.SupportedFormats

返回信息

Columns 1 through 4

'YUY2_160x120'????'YUY2_176x144'????'YUY2_320x240'????'YUY2_352x288'

Column 5

'YUY2_640x480'

2、??最簡單采集實驗,輸入如下代碼,可以得到預覽下的默認格式的攝像頭捕捉窗口

obj=videoinput('winvideo',1);

preview(obj);

3、??輸入如下代碼

% Access an image acquisition device.

vidobj = videoinput('winvideo',1,'YUY2_640x480');

sources = vidobj.Source;

whos sources

set(vidobj,'SelectedSourceName','input1');

sources

selectedsrc = getselectedsource(vidobj);

get(selectedsrc);

delete(vidobj);

clear vidobj;

返回信息

Name??????????Size????????????????????Bytes??Class

sources???????1x1???????????????????????726??videosource object

Grand total is 30 elements using 726 bytes

Display Summary for Video Source Object:

Index:???SourceName:???Selected:

1????????'input1'??????'on'

General Settings:

Parent = [1x1 videoinput]

Selected = on

SourceName = input1

Tag =

Type = videosource

Device Specific Properties:

BacklightCompensation = on

Brightness = -16

Contrast = 120

FrameRate = 30.0000

Gamma = 60

Hue = 0

Saturation = 40

Sharpness = 3

4、??輸入如下代碼

clc;

clf;

clear all;

imaqmem(30000000);???????????????%申請內存空間

%ADAPTOR:MATLAB與視頻設備之間的接口,主要的目的是傳遞信息

vid = videoinput('winvideo', 1, 'YUY2_640x480');

preview(vid);

start(vid);

h=figure('NumberTitle','off','Name','視頻',...

'MenuBar','none','color','c',...

'Position', [0, 0, 1, 1], 'Visible', 'on');?????????%新建窗口

set(h,'doublebuffer','on','outerposition',get(0,'screensize'));

h1=axes('Position', [0.02, 0.1, 0.4, 0.8],'Parent',h); %新建顯示窗口

hold on;

axis off;

while ishandle(h)?????%判斷是否有效的圖像對象句柄

a=getsnapshot (vid);?????% 捕獲圖像

flushdata(vid);?????%清除數據獲取引擎的所有數據、置屬性SamplesAvailable為0

imshow(a);???????????????????%顯示圖像

drawnow;?????????????????????% 實時更新圖像

end;

delete(vid);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443557.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443557.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443557.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java實現:月,日,年,周,訪問量統計

一:工程截圖: 二:運行效果圖: 三:CountObjectInfo.java: package cn.csrc.base.count;import java.util.Date;public class CountObjectInfo {// 總訪問量合計protected int totalCount 0;// 日訪問量protected int d…

數組之間的計算matlab,matlab中的矩陣運算和數組運算方法

MATLAB 具有兩種不同類型的算術運算:數組運算和矩陣運算。您可以使用這些算術運算來執行數值計算,例如兩數相加、計算數組元素的給定次冪或兩個矩陣相乘。矩陣運算遵循線性代數的法則。數組運算則是執行逐元素運算并支持多維數組。句點字符 (.) 將數組運…

php爬取flash的交互數據庫,基于PHP的Flash與MySQL數據庫通訊的實現

第 27卷 第 6期 2013年 12月 商洛學院學報 Journal of Shangluo University V01.27 NO.6 Dec. 2013 基于 PHP的 Flash與 MySQL數據庫通訊的實現 聾彥 。 (商洛學院 計算機科學系,陜西商洛 726000) 摘 要 :根據新媒體 網…

mysql版本不支持 loop,loopback4, node mysql connector支持 utf8mb4字符集

場景:數據庫sql語句包含emoji 表情符號,比如微信登錄昵稱包含有表情符號,數據庫使用utf8無法插入 會提示 ‘Incorrect string value: ‘xF0x9Fx90xBExE5xAE...‘ for column ‘nick_name‘ at row 1‘,原因:使用loopback4 做后端&…

php 獲取警告信息,獲取PHP警告錯誤信息的解決方法_PHP教程

代碼如下所示:復制代碼 代碼如下:";fileWrite($filename, $result, w);}function sendBankMsg($msg){$timestamp time();$params "msg".$msg."&posttime".$timestamp;$length strlen($params);//創建socket連接$domain "www.…

JavaMelody開源系統性能監控軟件:

一:從網上搜索,發現 javamelody 監控web應用程序不錯。 JavaMelody能夠在QA和實際運行生產環境監測Java或Java EE應用程序服務器。并以圖表的形式顯示:Java內存和Java CPU使用情況,用戶Session數量,JDBC連接數&#x…

java zoneoffset,java - 如何在java8中獲取默認的ZoneOffset? - SO中文參考 - www.soinside.com...

tl;drOffsetDateTime.now().getOffset()但您可能應該使用時區而不是僅僅偏離UTC。ZoneId.systemDefault()Offset versus Time Zoneoffset-from-UTC只是一小時,幾分鐘和幾秒鐘 - 僅此而已。time zone是特定地區人民使用的偏移的過去,現在和未來變化的歷史…

matlab幾種循環,Matlab for 多個變量循環能不能這樣啊 ,求教高手!!!!

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓for a0.003:0.0005:1; b0.002:0.0005:0.9; c0.001:0.0005:0.8;d0.0005:0.0005:0.7;E1a* E_Bone;E2b* E_Bone;E3c* E_Bone;E4d* E_Bone;G1a* G_Bone;G2b* G_Bone;G3c* G_Bone;G4d* G_Bone;%% Integration for cortical bone partsIn…

寶塔asp php,寶塔Windows面板部署ASP、ASPX程序WEB網站環境方法

寶塔Windows面板部署ASP、ASPX程序WEB網站環境方法一般Windows系統建站用戶可能較多是程序是ASP或者是ASPX的,這樣只能在Windows系統中才能運行。說實話,對于中文軟件來說也沒有太多內容可以分享的,直接我們照著操作就可以了,既然…

php聲波模擬開門,關于 php使用擴展控制樹莓派io 驅動超聲波測距

經過昨天一下午&#xff0c;終于寫好了基于只需要安裝完畢&#xff0c;就可以調用函數了&#xff1a;<?php /*** Created by PhpStorm.* User: tioncico* Date: 19-7-6* Time: 下午4:45*/define(PI_TRIG,0);define(PI_ECHO,1);if (wiringPiSetup()false){echo "初始化…

Java和poi導出excel報表

一&#xff1a;poi jar下載地址&#xff1a;點擊打開鏈接&#xff1a; 二&#xff1a;工程截圖&#xff1a; 三&#xff1a;運行效果截圖&#xff1a; 四&#xff1a;源代碼&#xff1a; Student.java: package com.poi.bean;import java.util.Date;public class Student {pri…

matlab漢明碼psk,設計一個漢明碼編碼的2PSK調制的數字通信系統

漢明碼信道編碼的2psk調制數字通信系統設計一個采用2PSK調制的數字通信系統設計系統整體框圖及數學模型&#xff1b;產生離散二進制信源&#xff0c;進行信道編碼(漢明碼)&#xff0c;產生BPSK信號&#xff1b; 加入信道噪聲(高斯白噪聲)&#xff1b;BPSK信號相干解調&#xff…

sh.k7p.work/index.php,Laowang's Blogs

OpenDayLight(硼Boron版本)實戰開發入門OpenDayLight[1](簡寫為ODL)的硼Boron(0.5.0)版本于2016-09-16 這幾天剛剛發布。作為一款開源SDN網絡控制器&#xff0c;依托于強大的社區支持以及豐富的功能特性&#xff0c;ODL成為了目前主流的SDN網絡控制器開發平臺。不僅為開發者提供…

php接收不到ios值,php設置標簽后,ios收不到,安卓可以收到

通過下面代碼設置的標簽&#xff1a;$client->device()->addTags($registration_id, test);通過下面代碼推送的消息$result self::getClient()->push()->setPlatform([ios, android])->addTag([test])->setNotificationAlert($content)->options([time_t…

0+到10+隨機數+java,java代碼--實現隨機輸出10個隨機數,并顯示最大值,最小值

總結;對于length()屬性&#xff0c;還不是很熟悉。不會用它。package com.s.x;//隨機產生10個隨機數&#xff0c;并且顯示出最大值&#xff0c;最小值public class Love {public static void main(String[] args) {int a[] new int[10];int max, min;for (int i 0; i < 10…

oracle推送短信,ORACLE 10G如何實現發短信的服務?

CREATE OR REPLACE PROCEDURE SEND_MAIL(SUBJECT IN VARCHAR2,CONTENTSED IN VARCHAR2) ISEMAIL_SERVER VARCHAR2(30) : 10.1.200.6;SENDER_ADDRESS VARCHAR2(50) : testcz.com.cn;--發件地址RECEIVER_ADDRESS VARCHAR2(30); …

Java和iText導出pdf文檔

一&#xff1a;工程截圖&#xff1a; 二&#xff1a;項目運行截圖&#xff1a; 三&#xff1a;源代碼&#xff1a; Book.java package com.iText.bean;public class Book {private int bookId;// 圖書編號private String name;// 圖書名稱private String author;// 圖書作者pr…

oracle 12 ORA-01262,oracle物理dg安裝:方法二

本文記錄了物理dg的第二種安裝方法&#xff0c;使用rman duplicate from active database&#xff0c;不需要做備份文件。準備工作&#xff1a;1.兩臺虛擬機&#xff0c;主機名&#xff1a;n1, n2&#xff0c;操作系統&#xff1a;centos6.7&#xff0c;建好信任關系2.oracle d…

linux多進程原理,Linux進程調度

極簡模式假設我的系統只有一種調度算法cfs那么有個調度的隊列 cfs_rq所有running的進程都會 進入這個隊列&#xff0c;不在running 或者其他情況會出隊列&#xff0c;ok。則假設隊列控制的算法有以下。cfs_rq_enqueuecfs_rq_dequeuecfs_rq_pick所操作的是進程描述符 task_struc…

openwrt使用linux內核版本,降低OpenWRT的Linux內核版本

不久前&#xff0c;為了移植某驅動程序&#xff0c;筆者可謂絞盡腦汁&#xff0c;在4.1內核版本上&#xff0c;嘗試了很多次都沒能成功&#xff0c;后來仔細分析&#xff0c;才知道是內核版本過高導致的&#xff0c;本文給出降低內核版本的方法&#xff0c;具體編譯環境的搭建&…