matlab 读取视频文件和摄像头

一、视频的读取和显示

  视频数据的读取要用到VideoReader这个函数,按照matlab软件中举的例子,基本流程是在用VideoReader建立一个obj后,采用read函数来读取一帧帧图像,最后用movie函数来放映视频。但是matlab自带的函数读取avi格式的视频时也只能读取那些原始格式的avi,比较局限性。其读取过程可以采用下面2种方法:

  先读完,再显示。

  即先将视频数据读取到内存的结构体中,然后直接从内存中拿数据来显示,这显示的视频看起来比较流畅,可是一开始把所有数据读入内存的过程所用时间也有点长。

  在matlab指定目录下放入需要读取的视频,我这里放的是test.avi.其代码如下:

%% 先读取,后播放
mov = VideoReader( ‘test.avi‘ );
movFrames = mov.NumberOfFrames;
movHeight = mov.Height;
movWidth = mov.Width;
src(1:200) = struct( ‘cdata‘, zeros(movHeight, movWidth, 3, ‘uint8‘),...
    ‘colormap‘, [] );%前面一定要是cdata,且后面要加上后面的colormap,
                    %否则运行出错,why?
% src(1:150) = struct( ‘cdata‘, zeros(movHeight, movWidth, 3, ‘uint8‘) );
for i =1:200 %按照matlab自带的例子,这里应该可以用movFrames代替200的,解决办法见本博客
            %但是运行会报错
src(i).cdata = read( mov, i );
end

hf = figure;
set( hf, ‘position‘, [150 150 movWidth movHeight] );

movie( hf, src, 1, mov.FrameRate );

  读一帧显示一帧。

  直接从视频数据中抽取一帧,然后显示一帧图像,这样感觉视频显示的时候有点卡,不知道是不是程序设置问题。其代码如下:

%% 一帧一帧的读取视频数据,然后播放
mov = VideoReader( ‘test.avi‘ );
for i=1:mov.NumberOfFrames
    img = read( mov, i );
    imshow(img);
end

二、摄像头的读取和显示

  摄像头的读取要用到videoinput这个函数,当然它也只能读取能扫描到的摄像头,且名字也必须对应起来。读完后需要用preview函数来显示读取到的摄像头数据。

  首先查看本机连有的摄像头,输入命令imaqhwinfo,显示结果为:

  

  可以看出有个名为’winvideo’的摄像头被扫描到

  查看‘winvideo‘摄像头的id号,输入命令imaqhwinfo( ‘winvideo’ ),显示结果为:

  

  可以看出其DeviceIDs编号为1.另外返回的DeviceInfo如果为1x1的话,说明该摄像头可用。

  自己设置显示的属性后即可显示摄像头数据了,此时的代码如下:

%% 读取摄像头
%法一:

%imaqhwinfo
src = videoinput( ‘winvideo‘, 1 );%由imaqhwinfo(‘winvideo‘)查看到DeviceIDs为1
figure( ‘Name‘, ‘摄像头:‘ );
uicontrol( ‘String‘, ‘Close‘, ‘Callback‘, ‘close(gcf)‘ );%gcf为current figure handle
                                                         %即为当前图像句柄
vidRes = get( src, ‘VideoResolution‘ );%返回分辨率,即摄像头数据的宽和高
nBands = get( src, ‘NumberOfBands‘ );%返回摄像头数据的通道数,我这里返回的是3
hImage = image( zeros(vidRes(2), vidRes(1), nBands) );
preview(src, hImage);%以hImage的尺寸格式显示摄像头数据

  当然,还可以采用更简单的读取方法,即采用默认的显示属性,代码如下:

%% 读取摄像头
%法二:

%imaqhwinfo
src = videoinput( ‘winvideo‘, 1 );%此处第二个参数1可以省略
preview( src );%以默认格式显示数据
时间: 2024-08-25 19:09:37

matlab 读取视频文件和摄像头的相关文章

【探索OpenCV】OpenCV读取视频文件

OpenCV读取视频文件之前需要做是事情: 1.下载视频编码解码器 推荐XviD,下载链接:http://pan.baidu.com/s/1jGjE2ii 密码:xrni 2.用格式工厂将视频文件转成标准格式,如*.avi /*----------------------------------------OpenCV视频读取代码---------------------------------------------*/ CString Filepath; CFileDialog dlg(TR

python+opencv读取视频,调用摄像头

引用 import cv2 import numpy 创建摄像头对象 cap = cv2.VideoCapture("videoTest/test1.mp4") #参数为视频文件目录 逐帧显示实现视频播放 while 1: ret, frame = cap.read() #读取 cv2.imshow("capture", frame) #显示 if cv2.waitKey(100) & 0xff == ord('q'): #按q退出 break 释放摄像头对

matlab读取cvs文件的几种方法

matlab读取CVS文件的几种方法: 1,实用csvread()函数 csvread()函数有三种使用方法: 1.M = csvread('filename')2.M = csvread('filename', row, col)3.M = csvread('filename', row, col, range) 第一种方法中,直接输入文件名,将数据读到矩阵M中.这里要求csv文件中只能包含数字. 第二种方法中,除了文件名,还指定了开始读取位置的行号(row)和列号(col).这里,行号.列号

Matlab 读取excel文件提示服务器出现意外情况或无法读取问题解决

1.问题描述: 该错误通常发生在应用函数读取excel文件(后缀xls或xlsx)时. 应用xlsread函数读取提示服务器出现意外情况: 应用importdata读取时提示can‘t open file: 其他格式如txt文档则可以正常读取. 2.问题解决 该问题与Matlab无关,为Excel端出现了问题.解决方案如下: 步骤:Excel选项——加载项——Com加载项 :去掉VisualStudion相关勾选. 去掉勾选的时候还可能出现“无法更改 中注册的office 加载项的连接状态”的提

java读取视频文件时长

1.下载jar包:http://www.sauronsoftware.it/projects/jave/index.php 2.上代码 1 @RequestMapping(value = "amendFile.htm", produces = "application/json;charset=UTF-8") 2 @ResponseBody 3 public String amendFile(MultipartFile file, HttpServletReques

Matlab 读取dat文件(包含几行多余文本,数据带有数字和字符串,且以逗号分隔)

需要删除前几行多余文本,并去除逗号和最后一列标签项,保存数据 处理前: matlab代码: fid = fopen('E:\study\研究生\a\backup新\backup\数据库\ecoli1.dat','rt'); %FormatString='%f %f %f %f %f %f %f %s';%取前8列数据 FormatString='%f %f %f %f %f %f %f %*[^\n]';%取前七列数据,最后一列标签去掉 % 注意:%*[^\n] 就是从当前直接跳到行尾.%*是一

matlab读取csv文件数据并绘图

circle.m(画二维圆的函数) %该函数是画二维圆圈,输入圆心坐标和半径%rectangle()函数参数‘linewidth’修饰曲线的宽度%'edgecolor','r',edgecolor表示边框颜色,r表示颜色参数%'facecolor','b',facecolor表示内部填充颜色,b表示颜色参数function [] = circle( x,y,r )rectangle('Position',[x-r,y-r,2*r,2*r],'Curvature',[1,1],'linewidth

filestream 读取视频文件

1 class Program 2 { 3 static void Main(string[] args) 4 { 5 string source = @"F:\361\android studio\4.0\亲情奉献-全套精品.Net基础班视频教程-video\亲情奉献全套精品.Net基础视频教程之10-面向对象多态\(第十二天)\video/13.模拟移动硬盘.U盘.MP3.avi"; 6 string target = @"C:\Users\dell-\Desktop/n

OpenCV3读取视频或摄像头

我们可以利用OpenCV读取视频文件或者摄像头的数据,将其保存为图像,以用于后期处理.下面的实例代码展示了简单的读取和显示操作: 1 // This is a demo introduces you to reading a video and camera 2 #include <iostream> 3 #include <string> 4 #include <sstream> 5 using namespace std; 6 7 // OpenCV include