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.mzph.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;具体编译环境的搭建&…