您的位置:首页 > 运维架构

opencv对电脑摄像头采集和边缘检测

2015-11-19 13:23 330 查看
#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;
}


视频采集和边缘检测
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: