OpenCV:从摄像头或AVI文件捕捉视频流并进行边缘检测

<span style="font-size:14px;">//从摄像头或AVI文件捕捉视频流并进行边缘检测#include <opencv\cv.h>#include <opencv\highgui.h>#include <ctype.h>#include <stdio.h>int main( int argc, char** argv ){IplImage* laplace = 0;IplImage* colorlaplace = 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( argc == 2 ? argv[1][0] – '0' : 0 );else if( argc == 2 )capture = cvCaptureFromAVI( argv[1] );if( !capture ){fprintf(stderr,"Could not initialize capturing…\n");return -1;}cvNamedWindow( "Laplacian", 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 );colorlaplace = cvCreateImage( cvSize(frame->width,frame->height), 8, 3 );}cvCvtPixToPlane( frame, planes[0], planes[1], planes[2], 0 );for( i = 0; i < 3; i++ ){cvLaplace( planes[i], laplace, 3 ); // 3: aperture_sizecvConvertScaleAbs( laplace, planes[i], 1, 0 ); // planes[] = ABS(laplace)}cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace );colorlaplace->origin = frame->origin;cvShowImage("Laplacian", colorlaplace );if( cvWaitKey(10) >= 0 )break;}cvReleaseCapture( &capture );cvDestroyWindow("Laplacian");return 0;}</span>

运行截图:

,又或者是后天的,我们不断学习,努力进取的路途中辛苦寻到的武器。

OpenCV:从摄像头或AVI文件捕捉视频流并进行边缘检测

相关文章:

你感兴趣的文章:

标签云: