本章开始学习新的内容,如何从图像中将目标或部分目标分割出来,也希望将感兴趣的目标区域分割出来,比如将一个人的脸或手分割出来。背景减除(差分)是最基本的图像处理操作,处理方法是建立背景模型,然后将背景模型和当前的图像进行比较,减去这些已知的背景信息,则剩下的目标物大致就是所求的前景目标了,但是该方法受累于一个不常成立的假设:所有像素点都是独立的。本例程考察图像中的像素点在一段时间内如何变化,从视频中读出一行直线,对这条直线的像素的RGB值进行采样,收集这些数值并存入三个文件。大致的思路参见代码注释。
本视频30s,68帧画面,每次采样11个像素点,总共有3*68*11个数据。
----------------------------------------------------------------------------------------------------
数据结构:CvLineIterator iter; //采样迭代器
方法:
cvCreateFileCapture
初始化从文件中获取视频
CvCapture* cvCreateFileCapture( const char* filename );
filename
视频文件名。
函数cvCreateFileCapture给指定文件中的视频流分配和初始化CvCapture结构。
当分配的结构不再使用的时候,它应该使用cvReleaseCapture函数释放掉。
cvGrabFrame
从摄像头或者视频文件中抓取帧
int cvGrabFrame( CvCapture* capture );
capture

本文介绍图像处理中的目标分割技术,通过背景减除建立模型,并以视频为例,从每一帧中抽取直线像素进行采样。采用CvLineIterator作为采样迭代器,结合cvCreateFileCapture、cvGrabFrame和cvRetrieveFrame等函数,实现对视频帧的处理,将像素值存储到文件。实验以30s视频、每帧11个像素点为数据源,探讨像素点随时间的变化。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



