//从视频文件中读入数据-->将数据转换为灰度图-->对图像做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. 被IP代理网站屏蔽了,真是跪了

    被IP代理网站http://www.xicidaili.com/nn/屏蔽了,真是跪了 T T

  2. caffe: test code for PETA dataset

    test code for PETA datasets .... #ifdef WITH_PYTHON_LAYER #include "boost/python.hpp" name ...

  3. DNS-解析、劫持、污染

    DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工 ...

  4. 通知---iOS

    #import <Foundation/Foundation.h> #define CHILD_WEAK_NOTIFC @"childe_week" @interfac ...

  5. C++ typedef详解

    1.typedef的用途1)定义一种类型的别名注意typedef并不是简单的宏替换,如下例所示: int main() { char *pa,pb;//声明了一个指向字符变量的指针pa,和一个字符变量 ...

  6. 使用git提交github代码

    新的项目的提交 touch README.md git init git add README.md git commit -m "first commit" git remote ...

  7. cocos2dx 2.x 在ios8下clippingNode不起作用 解决办法

    升级xcode到6.1后,跑以前的cocos2dx 2.x写的项目,发现clippingNode失效了. 后来看到这个帖子,解决了我的问题:http://discuss.cocos2d-x.org/t ...

  8. node-webkit 应用打包发布

    方便进行打包,使用了nodejs  ,gulp  nw-builder 备注  windows 操作系统部分版本需要包含  msvcr100.dll  建议制作安装程序的时候直接包含 为了进行视频以及 ...

  9. vs2010编译lua-5.3.2

    lua-5.3.2.tar.gz 解开在 D:\lua 1. 启动VS命令行 2. c:\program files\microsoft visual studio 10.0\vc\bin>cd ...

  10. Mysql 排序优化与索引使用(转)

    为了优化SQL语句的排序性能,最好的情况是避免排序,合理利用索引是一个不错的方法.因为索引本身也是有序的,如果在需要排序的字段上面建立了合适的索引,那么就可以跳过排序的过程,提高SQL的查询速度.下面 ...