首页 > 其他 > 详细

图像序列生成Avi格式视频——matlab实现

时间:2014-04-13 11:35:09      阅读:446      评论:0      收藏:0      [点我收藏+]

今天做目标跟踪,由于是对图像序列中目标做跟踪,在跟踪了以后想要将跟踪的效果做成视频。问了度娘看了前辈们的一些做法,大多零散。在此将参考前辈们的方法而写的一个将目标跟踪中效果保存成视频的matlab小程序分享给大家,希望能有所帮助。

分为两个步骤:

一:将目标在对应的图像中画出(以矩形框为例)代码如下:

bubuko.com,布布扣
 1 function result=draw_rect(data,pointAll,windSize)
 2 % 函数调用:result=draw_rect(data,pointAll,windSize)
 3 % 函数功能:在图像画个长方形框
 4 % 函数输入:data为原始的大图,可为灰度图,可为彩色图
 5 %          pointAll 框的左上角在大图中的坐标(每行代表一个坐标),
 6 %                   注意:在图中的坐标系为第一列为y,第二列为x(很奇怪的)
 7 %          windSize 框的大小 windSize=[112,92] 分别表示长宽
 8 %          showOrNot 是否要显示,默认为显示出来
 9 % 函数输出:

         result - 结果图像数据 
13 if nargin < 4
14     showOrNot = 1;
15 end
16 
17 rgb = [255 0 0];                                 % 边框颜色
18 lineSize = 3;                                      % 边框大小,取1,23
19 
20 windSize(1,1)=windSize(1,1);
21 windSize(1,2) = windSize(1,2);
22 if windSize(1,1) > size(data,1) ||...
23         windSize(1,2) > size(data,2)
24     state = -1;                                     % 说明窗口太大,图像太小,没必要获取
25     disp(the window size is larger then image...);
26     return;
27 end
28 size(data,1)
29 result = data;
30 if size(data,3) == 3
31     for k=1:3
32         for i=1:size(pointAll,1)   %画边框顺序为:上右下左的原则
33             result(pointAll(i,1),pointAll(i,2):pointAll(i,2)+windSize(i,1),k) = rgb(1,k);   
34             result(pointAll(i,1):pointAll(i,1)+windSize(i,2),pointAll(i,2)+windSize(i,1),k) = rgb(1,k);
35             result(pointAll(i,1)+windSize(i,2),pointAll(i,2):pointAll(i,2)+windSize(i,1),k) = rgb(1,k);  
36             result(pointAll(i,1):pointAll(i,1)+windSize(i,2),pointAll(i,2),k) = rgb(1,k);  
37             if lineSize == 2 || lineSize == 3
38                 result(pointAll(i,1)+1,pointAll(i,2):pointAll(i,2)+windSize(i,1),k) = rgb(1,k);  
39                 result(pointAll(i,1):pointAll(i,1)+windSize(i,2),pointAll(i,2)+windSize(i,1)-1,k) = rgb(1,k);
40                 result(pointAll(i,1)+windSize(i,2)-1,pointAll(i,2):pointAll(i,2)+windSize(i,1),k) = rgb(1,k);
41                 result(pointAll(i,1):pointAll(i,1)+windSize(i,2),pointAll(i,2)-1,k) = rgb(1,k);
42                 if lineSize == 3
43                     result(pointAll(i,1)-1,pointAll(i,2):pointAll(i,2)+windSize(i,1),k) = rgb(1,k);   
44                     result(pointAll(i,1):pointAll(i,1)+windSize(i,2),pointAll(i,2)+windSize(i,1)+1,k) = rgb(1,k);
45                     result(pointAll(i,1)+windSize(i,2)+1,pointAll(i,2):pointAll(i,2)+windSize(i,1),k) = rgb(1,k);
46                     result(pointAll(i,1):pointAll(i,1)+windSize(i,2),pointAll(i,2)+1,k) = rgb(1,k);
47                 end
48             end
49         end
50     end
51 end
bubuko.com,布布扣

二:将图像存入视

bubuko.com,布布扣
 clc ;clear all;close all;

 addpath(./cliffbar);%添加图像所在路径,即测试所用图像序列路径
  img_dir = dir(./cliffbar/*.png);
  len=length(img_dir);
  aviobj = avifile(cliffbar.avi);%创建一个名为cliffbar的视频,即生成视频的名字
  aviobj.Quality = 100;%内调参数,详细了解可以使用help查看
 start_point=[120,138];%所画矩形的起始点
   h_w=[38,59];%所画矩形的长宽

  for i=1:len
     img=imread(img_dir(i).name);
    result=draw_rect(img,start_point,h_w);
    aviobj=addframe(aviobj,uint8(result));  
 end
 aviobj=close(aviobj);
bubuko.com,布布扣

 

图像序列生成Avi格式视频——matlab实现,布布扣,bubuko.com

图像序列生成Avi格式视频——matlab实现

原文:http://www.cnblogs.com/edie0902/p/3660751.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!