《学习OpenCV》第四章课后题1-a
2015-07-18 11:11
411 查看
题目说明:
a创建一个程序实现以下功能:(1)从视频文件中读入数据;(2)将读入数据转换为灰度图;(3)对图像做Canny边缘检测。将三个过程的处理结果显示到不同的窗口中,每个窗口根据其内容合理命名。
注意:不要把gray_frame = cvCreateImage( cvGetSize(frame), frame->depth, 1);和canny_frame = cvCreateImage( cvGetSize(frame), frame->depth, 1);放到while循环中去,这样会在内存中不断申请空间,最后导致内存泄露而停止程序。
引用:qdsclove的专栏
/article/1384989.html
a创建一个程序实现以下功能:(1)从视频文件中读入数据;(2)将读入数据转换为灰度图;(3)对图像做Canny边缘检测。将三个过程的处理结果显示到不同的窗口中,每个窗口根据其内容合理命名。
#include <highgui.h> #include <cv.h> int main() { char * file_path = "E:/song.mp4"; CvCapture * capture = 0; capture = cvCreateFileCapture(file_path); // 载入视频文件失败 if(capture == NULL) { printf("Can't load the video file, quit...\n"); return 0; } // 每一帧 static IplImage * frame; // 灰度后的每一帧 static IplImage * gray_frame; // 边缘检测后的每一帧 static IplImage * canny_frame; //创建三个窗口 cvNamedWindow("color",CV_WINDOW_AUTOSIZE); cvNamedWindow("gray",CV_WINDOW_AUTOSIZE); cvNamedWindow("canny",CV_WINDOW_AUTOSIZE); // 从视频文件读入数据 frame = cvQueryFrame(capture); // 为gray_frame 和 canny_frame 分配合适的尺寸 gray_frame = cvCreateImage( cvGetSize(frame), frame->depth, 1); canny_frame = cvCreateImage( cvGetSize(frame), frame->depth, 1); while(1) { frame = cvQueryFrame(capture); if(!frame) break; // 将读入数据转换为灰度图 cvCvtColor( frame, gray_frame, CV_RGB2GRAY ); // 对图像做Canny边缘检测 cvCanny( gray_frame, canny_frame, 30, 100, 3); // 显示图像 cvShowImage("color", frame); cvShowImage("gray", gray_frame); cvShowImage("canny", canny_frame); char c = cvWaitKey(4); if(c == 27) break; } cvReleaseCapture(&capture); //释放图像数据 cvReleaseImage(&frame); cvReleaseImage(&gray_frame); cvReleaseImage(&canny_frame); //释放窗口数据 cvDestroyAllWindows(); return 0; }
注意:不要把gray_frame = cvCreateImage( cvGetSize(frame), frame->depth, 1);和canny_frame = cvCreateImage( cvGetSize(frame), frame->depth, 1);放到while循环中去,这样会在内存中不断申请空间,最后导致内存泄露而停止程序。
引用:qdsclove的专栏
/article/1384989.html
相关文章推荐
- Linux环境下stl库使用(map)
- Kali Linux 建立无线热点 · RTL8188CUS
- 架构师速成4.8-幼儿园书单资料推荐
- 架构师速成4.8-幼儿园书单资料推荐 分类: 架构师速成 2015-07-18 11:03 248人阅读 评论(0) 收藏
- Linux常用命令
- linux设备驱动之总线、设备、驱动
- 站点推荐(ing)
- Linux用户空间与内核空间
- centos 6.5 源码安装apache
- 【Hadoop系列第六章】HBase应用场景、原理与基本架构
- tomcat启动Publishing failed with multiple errors
- 论坛:特殊属性的作用/维护
- linux运维人员需要知道的重要/常用目录介绍
- 网站开发基本常识
- 3 分钟的高速体验 Apache Spark SQL
- 三层架构(一个)——什么是三层架构?
- 嵌入式linux按键驱动,同步互斥阻塞,linux进程六大状态
- Linux操作系统基础命令、快捷键
- Makefile自动生成,初级版本
- nginx 统计日志访问ip个数