//从视频文件中读入数据-->将数据转换为灰度图-->对图像做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. 点亮LED(库函数实现)

    本次测试采用的芯片是STM32F103CB 我的开发板如下: 此开发板有8个led,分别为D11,D12,D13,D14,D15,D16,D17,D18.查询核心板的电路图后知道其对应芯片的控制引脚为 ...

  2. GDB调试器

    /*this project used for gdb debug c programs*//*At first,using compile command turn out the executab ...

  3. 使用swiper和吸顶效果代码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  4. SQL Server 表所在的文件组

    SELECT  o.[name] ,-- o.[type], i.[name], i.[index_id],         f.[name] FROM    sys.indexes i        ...

  5. OSI安全体系结构

    建立七层模型主要是为解决异种网络互连时所遇到的兼容性问题.它的最大优点是将服务.接口和协议这三个概念明确地区分开来;也使网络的不同功能模块分担起 不同的职责.也就是说初衷在于解决兼容性,但当网络发展到 ...

  6. awk笔记

    http://www.cnblogs.com/zhuyp1015/archive/2012/07/14/2591842.html awk实例练习 http://www.cnblogs.com/repo ...

  7. unity 合并skinnedMeshRenderer中遇到的一个大坑

    将多个skinnedMeshRenderer合并成一个skinnedMeshRenderer,主要涉及的mesh合并.骨骼列表合并.重定向顶点骨骼索引.其中重定向顶点骨骼索引只是通过加偏值即可完成,所 ...

  8. RequireJS 文件合并压缩

    RequireJS的define 以及require 对于我们进行简化JavaScript 开发,进行模块化的处理具有很大的帮助 但是请求加载的js 文件会有一些影响,一般的处理是对于文件进行压缩,但 ...

  9. ASP.NET让FileUpload控件支持浏览自动上传功能的解决方法

    ASP.NET的FileUpload控件默认是不支持服务端的onchange事件的,此时可以用一种变通的方法来实现这一功能. 这就需要借用客户端的onchange事件,调用__doPostBack方法 ...

  10. eclipse中java文件报错:The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files

    问题:The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class fi ...