//从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中
//作者:sandy
//时间:2015-10-10
#include <cv.h>
#include <highgui.h> #include<stdarg.h>
#include <iostream>
void showThreeImage(char *title,int num,...){
//声明变量
IplImage *img;
IplImage *dispImg;
int i,m,n;
//创建image,大小960*300,8位无符号,3通道
dispImg = cvCreateImage(cvSize(, ), , ); va_list args;//【定义不定参数列表args】
va_start(args,num);//【获得第一个可变参数地址】
for(i=,m=,n=;i<num;i++,m+=){
img = va_arg(args,IplImage*);//【读取一个IplImage类型的,args指向下一个】
if(img==){
printf("Invalid arguments");
cvReleaseImage(&dispImg);
return;
}
//设置感兴趣区域,随着for的循环,感兴趣区域不断右移
cvSetImageROI(dispImg,cvRect(m,n,, ));
//释放指针,为下一幅图的指向做准备
cvResize(img,dispImg);
//释放感兴趣区域,为下一次做准备
cvResetImageROI(dispImg);
}
cvShowImage(title,dispImg);
va_end(args);//【结束解析】
cvReleaseImage(&dispImg); } int main(int argc, char *argv[]){
CvCapture* capture=cvCreateFileCapture("E:\\Videos\\xx.avi");//让capture变量指向视频文件
if(!capture) return -;//检查函数是否成功
cvNamedWindow("video",);//声明窗口
cvResizeWindow("video",,);
//cvNamedWindow("video1",1);
while(){
//变量初始化
IplImage *vd_frame = cvQueryFrame(capture);
IplImage *gray_frame = cvCreateImage(cvGetSize(vd_frame),vd_frame->depth,);
IplImage *canny_frame = cvCreateImage(cvGetSize(vd_frame),vd_frame->depth,);
//和vd_frame一样的通道
IplImage *frame1=cvCreateImage(cvGetSize(vd_frame),vd_frame->depth,vd_frame->nChannels);
IplImage *frame2=cvCreateImage(cvGetSize(vd_frame),vd_frame->depth,vd_frame->nChannels); //image转换
cvConvertImage(vd_frame,gray_frame,);//flag=1则会得到倒立的图像
cvCanny(vd_frame,canny_frame,,,);//阈值一,小一点可以扣更多边缘。。阈值二越大扣的越少,3通道
//cvShowImage("video1",canny_frame);
//颜色转换
cvCvtColor(gray_frame,frame1,CV_GRAY2RGB);//BGR或RGB都行
cvCvtColor(canny_frame,frame2,CV_GRAY2RGB);
//函数调用
//cvShowImage("video1",frame1);
showThreeImage("video",,vd_frame,frame1,frame2); char c=cvWaitKey();
if(c==) break;
//释放空间
cvReleaseImage(&gray_frame);
cvReleaseImage(&canny_frame);
cvReleaseImage(&frame1);
cvReleaseImage(&frame2); }
cvReleaseCapture(&capture);
cvDestroyAllWindows();
return ;
}

从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中的更多相关文章

  1. 机器学习进阶-图像基本处理-视频的读取与处理 1.cv2.VideoCapture(视频的载入) 2.vc.isOpened(载入的视频是否可以打开) 3.vc.read(视频中一张图片的读取) 4.cv2.cvtColor(将图片转换为灰度图)

    1.vc = cv2.VideoCapture('test.mp4') #进行视频的载入 2.vc.isOpened() # 判断载入的视频是否可以打开 3.ret, frame = vc.read( ...

  2. 创建一个欢迎 cookie 利用用户在提示框中输入的数据创建一个 JavaScript Cookie,当该用户再次访问该页面时,根据 cookie 中的信息发出欢迎信息。

    创建一个欢迎 cookie 利用用户在提示框中输入的数据创建一个 JavaScript Cookie,当该用户再次访问该页面时,根据 cookie 中的信息发出欢迎信息. <html> & ...

  3. c语言实现BMP图像转换为灰度图

    当初是自己要装X,非要用c来写信息隐藏作业,装了X,就得付出实践.查了好久资料,到期末才把作业交了,这里总结一下. 这道题是将真彩图转换为灰度图. 关于BMP文件结构,这是困扰了我好久的问题,上网查了 ...

  4. Android-将RGB彩色图转换为灰度图

    package com.example.yanlei.wifi; import android.graphics.Bitmap; import android.graphics.BitmapFacto ...

  5. SharePoint Iframe 报错“此内容不能显示在一个框架中”

    问题描述 我们SharePoint站点用Excel Service发布的Excel,需要Iframe到其他系统中,但是,Iframe的时候发现报错“此内容不能显示在一个框架中”. 后来,尝试在其他系统 ...

  6. SharePoint Iframe 报错“此内容不能显示在一个框架中”<续>

    在之前的SharePoint站点iframe引用中,我们遇到过下面的问题,就是其它系统或者不通环境的SharePoint站点,引用SharePoint页面会报错“此内容不能显示在一个框架中”,之前我们 ...

  7. Qt 中彩色图像转换为灰度图

    近期在做几个图像处理相关的项目.里面有一个操作就是须要先将彩色图像转换为灰度图像. QImage 有一个convertToFormat方法.最開始一直用这个函数来实现. 可是今天细致看了看,发现这个函 ...

  8. 【Python开发】python PIL读取图像转换为灰度图及另存为其它格式(也可批量改格式)

    例如有一幅图,文件名为"a.jpg'.  读取: from PIL import Image #或直接import Image im = Image.open('a.jpg') 将图片转换成 ...

  9. 如何使用 python3 将RGB 图片转换为 灰度图

    首先,介绍第一种方法, 使用  PIL  库,   PIL库是一种python语言常用的一个图形处理库. 关于   PIL  库的安装本文就不介绍了. from PIL import Image I ...

随机推荐

  1. nginx配置说明

    #user nobody; worker_processes ; #error_log logs/error.log; #error_log logs/error.log notice; #error ...

  2. Java——设计模式(单例模式)

     /* * 设计模式: 对问题行之有效的解决方式,其实他是一种思想. * 1.单例设计模式. *  解决问题:  就是可以保证一个列在内存中的对象唯一性. * *如何保证对象的唯一性: *1. 不 ...

  3. C#的157个建议--读书笔记(一)

    操作符的重载 ----实现类对象可以像值类型那样进行操作符的操作 实现比较器(IComparable)---实现对象的排序方式 协变:让返回值类型返回比声明的类型派生程度更大的类型:协变支持的两种方式 ...

  4. Hightchart.js 的使用

    中文网址介绍 http://www.hcharts.cn/docs/basic-zoom http://v1.hcharts.cn/demo/index.php?p=46

  5. UIview 学习与自定义--ios

    UIView *view1=[[UIView alloc] initWithFrame:CGRectMake(50, 50, 100, 100)]; view1.backgroundColor=[UI ...

  6. OpenJudge计算概论-分配病房

    /*===================================== 分配病房 总时间限制: 1000ms 内存限制: 65536kB 描述 某个科室的病房分为重症和普通,只有当病人的疾病严 ...

  7. Asianux的SSH登录问题,密码不正确解决

    第一.ssh服务默认是关闭的,需要手动打开 [root@Asianux ~]# service sshd start      启动 [root@Asianux ~]#chkconfig sshd - ...

  8. Android Studio--学习系列(1)

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="ht ...

  9. 百度ueditor学习使用

    1.下载ueditor解压 2. jsp里存放着开发所用到的jar包,导入项目即可 前端页面代码如下: <center> <form action="" meth ...

  10. CentOS 6.6 yum 方式安装sunversion 服务器

    检查已安装版本 #检查是否安装了低版本的SVN[root@localhost /]# rpm -qa subversion #如果存储旧版本,卸载旧版本SVN[root@localhost modul ...