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

本文介绍了一个使用OpenCV库实现的程序,该程序能够从摄像头或视频文件中捕获帧,并对其进行拉普拉斯变换以突出图像边缘。通过将每一帧分解为三个颜色平面并分别应用拉普拉斯算子,然后重新组合这些平面来创建增强后的彩色图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者: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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值