OpenCV的一个目标是构建一个简单易用的计算机视觉框架,以帮助开发人员更便捷地设计更复杂的计算机视觉相关应用程序。OpenCV包含的函数有500多个,覆盖了计算机视觉的许多应用领域,如工厂产品检测,医学成像,信息安全,用户界面,摄像机标定,立体视觉和机器人等。它采用优化的C代码编写,能够充分利用多核处理器的优势。
本文采用的是OpenCV2.1版本, 包括以下几个模块, 其具体功能是:
CV模块: 主要的OpenCV函数, 包括图像处理、机构分析、运动分析与对象跟踪、模式识别、照相机定标和三文重建等;
CVAUX模块: 辅助的(实验性的) OpenCV函数;
CXCORE模块: 数据结构与线性代数支持;
ML模块: 机器学习库, 是一些用于分类、回归和数据聚类的类和函数;
HIGHGUI模块: 图像界面函数, 主要提供了图形用户窗口GUI, 图像视频I/O, 系统调用函数等。
2. 3 软件流程图
为了实现的火焰提取,第一步要正确读入视频了解视频的格式等;第二步需要对视频文件进行处理,主要是从视频文件中将火焰区域叠加得到一幅彩色图像,便于我们提取最大的火焰轮廓;第三步对叠加图像进行滤波降噪;第四步对叠加图像进行灰度变换;第五步对灰度图像进行增强;第751步对增强的灰度图像进行形态学处理;第七步采用大津法求出最佳的分割阀值,以此阀值为分割值对图像进行二值化处理,得到火焰区域;第八步对提取到得轮廓进行参数分析,计算出最大轮廓的周长面积。整体方案的流程图如图3:
图3 整体方案的流程图
3 系统模块设计
由于在第2章第3节中我们已经给出了软件模块的流程图,本章将对各个模块进行一个详细的介绍。
3. 1 视频帧提取
为了提取火焰区域,首先我们要正确读入视频文件,将该文件在窗口中显示出
来。OpenCV中提供了函数cvCreateFileCapture()对视频文件进行导入。接着采用函
数cvQueryFrame()访问该视频文件。为了可以直观的看到视频的内容,需要对其进行
窗口显示。在此需要运用函数cvNameWindow()和cvShowImage(),cvNameWindow()
是一个高层调用接口,由HighGUI库提供 ,它用于在屏幕上创建一个窗口,将被显示
的视频图像包含于该窗口中。cvShowImage()用于在上述创建的窗口中显示已加载的
视频图像。在此要提一下2个比较重要的函数。cvReleaseImage()和cvDestroyWindow()
用于释放所占用的内存[8-9]。相关程序如下:
CvCapture * pCap=cvCreateFileCapture("F:\\bysj\\project\\b\\Debug\\tim.avi");
IplImage* pFrame=NULL;
pFrame=cvQueryFrame(pCap);
if(pFrame==NULL)
return 0;
cvShowImage("video",pFrame);
cvReleaseCapture(&pCap);
cvDestroyWindow("video");
其中pCap为定义的视频文件名称,pFrame为目标视频文件名称。
3. 2 图像叠加
本文中的图像叠加是根据对比每帧图像相同像素点位置的像素值,取得各位置像
素的最大值并把它保存下来,按照各自位置重新组合到到新的图片中。图像叠加的流
程图如图4 图4 图像叠加
图像叠加的程序代码如下:
IplImage* pYuv=cvCreateImage(cvGetSize(pFrame),pFrame->depth,3);
cvCvtColor(pFrame,pYuv,CV_BGR2YCrCb);
IplImage* pYubDst=cvCreateImage(cvGetSize(pFrame),pFrame->depth,3);
- 上一篇:基于LabVIEW的抽壳力测试系统设计+文献综述
- 下一篇:VHDL基于FPGA的电机测速系统设计+文献综述
-
-
-
-
-
-
-
中考体育项目与体育教学合理结合的研究
十二层带中心支撑钢结构...
杂拟谷盗体内共生菌沃尔...
java+mysql车辆管理系统的设计+源代码
电站锅炉暖风器设计任务书
乳业同业并购式全产业链...
酸性水汽提装置总汽提塔设计+CAD图纸
大众媒体对公共政策制定的影响
河岸冲刷和泥沙淤积的监测国内外研究现状
当代大学生慈善意识研究+文献综述