#include "cxcore.h"
#include "cvcam.h"
#include "windows.h"
#include "cv.h"
#include "highgui.h"
#include "stdio.h"
#pragma comment(lib, "cv.lib")
#pragma comment(lib, "cxcore.lib")
#pragma comment(lib, "highgui.lib")
int main(int argc,char ** argv)
{
IplImage * laplace = 0;
IplImage * colorlaplace = 0;
IplImage * planes[3] = {0,0,0};
CvCapture *capture = 0;
//从摄像头读取
capture = cvCaptureFromCAM(0);
cvNamedWindow("Laplacian",1);
//循环捕捉,直到用户按键跳出循环体
for(;;)
{
IplImage * frame =0;
//抓起一祯
frame = cvQueryFrame(capture);
if(!frame)
break;
if(!laplace)
{
//创建图像
for(int i=0;i<3;i++)
planes[i] = cvCreateImage(cvSize(frame->width,frame->height),IPL_DEPTH_8U,1);
laplace = cvCreateImage(cvSize(frame->width,frame->height),IPL_DEPTH_16S,1);
colorlaplace = cvCreateImage(cvSize(frame->width,frame->height),IPL_DEPTH_8U,3);
}
//分割
cvCvtPixToPlane(frame,planes[0],planes[1],planes[2],0);
for(int i=0;i<3;i++)
{
//交换,如通道变换
cvLaplace(planes[i],laplace,3);
//使用线性变换转换输入函数元素成8为无符号整形
cvConvertScaleAbs(laplace,planes[i],1,0);
}
cvCvtPlaneToPix(planes[0],planes[1],planes[2],0,colorlaplace);
//结构相同(0 - 顶—左结构,1 - 底—左结构)
colorlaplace->origin = frame->origin;
cvShowImage("Laplacian",colorlaplace);
if(cvWaitKey(10)>0)
break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("Laplacian");
return 0;
}
视频采集和边缘检测