当前位置: 首页 > news >正文

【OpenCV学习】Laplace变换(视频边界检测)

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

#include "cv.h"
#include "highgui.h"
#include <ctype.h>
#include <stdio.h>
int main(int argc , char **argv)
{
    IplImage *laplace = 0;
    IplImage *coloelaplace = 0;
    IplImage *planes[3]={0,0,0};//多个图像面
    CvCapture *capture = 0;
    if (argc==1|| (argc==2 && strlen(argv[1])==1 && isdigit(argv[1][0])))
    {
        capture = cvCaptureFromCAM(-1);
    }
    else if(argc==2)
    {
        capture = cvCaptureFromAVI(argv[1]);
    }
    if (!capture)
    {
        fprintf(stderr,"Could not initialize capturing.../n");
        return -1;
    }
    cvNamedWindow("main",0);
    for (;;)
    {
        IplImage *frame=0;
        int i;
        frame = cvQueryFrame(capture);//从摄像头或者文件中抓取并返回一帧
        if (!frame)
        {
            break;
        }
        if (!laplace)
        {
            for (i=0;i<3;i++)
            {
                planes[i]=cvCreateImage(cvSize(frame->width,frame->height),8,1);
            }
            laplace=cvCreateImage(cvSize(frame->width,frame->height),IPL_DEPTH_16S,1);
            coloelaplace=cvCreateImage(cvSize(frame->width,frame->height),8,3);
        }
        cvCvtPixToPlane(frame,planes[0],planes[1],planes[2],0);
        //#define cvCvtPixToPlane cvSplit
        for (i=0;i<3;i++)
        {
            cvLaplace(planes[i],laplace,3);//计算图像planes[i]的 Laplacian 变换
            cvConvertScaleAbs(laplace,planes[i],1,0);//planes[]=ABS(laplace)
        }
        cvCvtPlaneToPix(planes[0],planes[1],planes[2],0,coloelaplace);
        //#define cvCvtPlaneToPix cvMerge
       
        coloelaplace->origin=frame->origin;
       
        cvShowImage("main",coloelaplace);
        if (cvWaitKey(10)>=0)
        {
            break;
        }
    }
   
    cvReleaseCapture(&capture);
    cvDestroyWindow("main");
    return 0;
}

 

作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

转载于:https://www.cnblogs.com/gnuhpc/archive/2012/10/08/2715884.html

相关文章:

  • smarty里面如何使用jquery
  • BZOJ 2099 [Usaco2010 Dec]Letter 恐吓信
  • IOSUITableView展开隐藏资源
  • Flex结合java实现一个登录功能
  • winform窗体去掉标题头部的两种方式
  • Mac OS X背后的故事(十一)Mac OS X文件系统的来龙去脉(上)
  • java中异步计算之Future
  • string.Format以及IFormattable,IFormatProvider,ICustomFormatter
  • System.InvalidOperationException 异常
  • hdu 3818模拟
  • 传送门
  • 互联网创业的准备——版本控制与上线
  • C简单文件操作。。
  • CI中site_url()和base_url()的区别
  • VS2010 多线程编程
  • egg(89)--egg之redis的发布和订阅
  • Java多线程(4):使用线程池执行定时任务
  • Java方法详解
  • Nodejs和JavaWeb协助开发
  • python3 使用 asyncio 代替线程
  • ReactNative开发常用的三方模块
  • vue--为什么data属性必须是一个函数
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 测试如何在敏捷团队中工作?
  • 程序员该如何有效的找工作?
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 面试总结JavaScript篇
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 如何优雅地使用 Sublime Text
  • 世界上最简单的无等待算法(getAndIncrement)
  • nb
  • elasticsearch-head插件安装
  • puppet连载22:define用法
  • 容器镜像
  • #1014 : Trie树
  • %check_box% in rails :coditions={:has_many , :through}
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (五)IO流之ByteArrayInput/OutputStream
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)拼包函数及网络封包的异常处理(含代码)
  • ../depcomp: line 571: exec: g++: not found
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • /etc/skel 目录作用
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @EventListener注解使用说明
  • @Not - Empty-Null-Blank
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [Asp.net MVC]Asp.net MVC5系列——Razor语法
  • [Django ]Django 的数据库操作
  • [docker] Docker容器服务更新与发现之consul