亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? opencvlkdemo.cpp

?? VideoMan (Video Manager) is an open-source C++ library that helps you developing video based applica
?? CPP
字號:
#include <windows.h>#include <GL/glut.h>#include "cv.h"#include <iostream>#include <string>#include "VideoManControl.h"
#include "VideoManInputFormat.h"using namespace std;/*This is the opencv example using optical flow.If no argument is passed, a camera is initialized.You can pass the path to a video file (you need the VMDirectshow module)*/VideoManControl videoMan;int screenLeft, screenUp, screenWidth, screenHeight;size_t videoInput;bool fullScreened;double videoLength;VideoManInputFormat format;std::string fileName;//LKdemo sample dataIplImage *image = 0, *grey = 0, *prev_grey = 0, *pyramid = 0, *prev_pyramid = 0, *swap_temp;
IplImage *frame = 0;

int win_size = 10;
const int MAX_COUNT = 500;
CvPoint2D32f* points[2] = {0,0}, *swap_points;
char* status = 0;
int count = 0;
int need_to_init = 0;
int night_mode = 0;
int flags = 0;
int add_remove_pt = 0;
CvPoint pt;
void glutResize(int width, int height){	screenLeft = 0;	screenUp = 0;	screenWidth = width;	screenHeight = height;	//Notify to VideoMan the change of the screen size	videoMan.changeScreenSize( screenLeft, screenUp, screenWidth, screenHeight );}void glutKeyboard(unsigned char key, int x, int y){	switch (key)	{		case 27:		{			exit(0);		}		case 'r':
            need_to_init = 1;
            break;
        case 'c':
            count = 0;
            break;
        case 'n':
            night_mode ^= 1;
            break;
        default:			break;	}}void glutSpecialKeyboard(int value, int x, int y){	switch (value)    {		case GLUT_KEY_F1:		{			if ( !fullScreened )				glutFullScreen();			else			{				glutPositionWindow( 0, 20 );				glutReshapeWindow( 640, 480 );			}			fullScreened = !fullScreened;			break;		}		    }}void InitializeOpenGL(){}bool InitializeVideoMan(){
	inputIdentification device;

	if ( !fileName.empty() )
	{
		//Initialize one input from a video file
		device.fileName = fileName; //file name
		device.identifier = "DSHOW_VIDEO_FILE"; //using directshow	
		format.timeFormat = SECONDS; //We want the time format in seconds
		if ( ( videoInput = videoMan.addVideoInput( device, &format ) ) != -1 )
		{
			printf("Loaded video file: %s\n", device.fileName.c_str() );
			printf("resolution: %d %d\n", format.width, format.height );

			//get the length of the video
			videoLength = videoMan.getLength( videoInput );
			videoMan.playVideo( videoInput );
			printf("duration: %f seconds\n\n", videoLength );
		}
	}
	else
	{
		//Initialize one input from a camera
		std::vector<inputIdentification> list;		videoMan.getAvailableDevices( list ); //list all the available devices		if ( list.size()>0 )			device = list[0]; //take the first
		format.showDlg = true;
		if ( list.size()>0 && ( videoInput = videoMan.addVideoInput( device, &format ) ) != -1 )
		{
			videoMan.showPropertyPage( videoInput );
			videoMan.getFormat( videoInput, format );
			printf("Initilized camera: %s\n", device.friendlyName.c_str() );
			printf("resolution: %d %d\n", format.width, format.height );
			printf("FPS: %f\n\n", format.fps );
		}		else		{			printf("There is no available camera\n");			return false;		}	}		//We want to display all the intialized video inputs	videoMan.activateAllVideoInputs();		return true;}void glutDisplay(void){	glClear(GL_COLOR_BUFFER_BIT);
	char *frameData = videoMan.getFrame( videoInput );
	
	if ( frameData != NULL )
	{
		cvSetImageData( frame, frameData, frame->widthStep );

		cvCopy( frame, image, 0 );
        cvCvtColor( image, grey, CV_BGR2GRAY );

		videoMan.releaseFrame( videoInput );

        if( night_mode )
            cvZero( image );

        if( need_to_init )
        {
            /* automatic initialization */
            IplImage* eig = cvCreateImage( cvGetSize(grey), 32, 1 );
            IplImage* temp = cvCreateImage( cvGetSize(grey), 32, 1 );
            double quality = 0.01;
            double min_distance = 10;

            count = MAX_COUNT;
            cvGoodFeaturesToTrack( grey, eig, temp, points[1], &count,
                                   quality, min_distance, 0, 3, 0, 0.04 );
            cvFindCornerSubPix( grey, points[1], count,
                cvSize(win_size,win_size), cvSize(-1,-1),
                cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03));
            cvReleaseImage( &eig );
            cvReleaseImage( &temp );

            add_remove_pt = 0;
        }
        else if( count > 0 )
        {
            cvCalcOpticalFlowPyrLK( prev_grey, grey, prev_pyramid, pyramid,
                points[0], points[1], count, cvSize(win_size,win_size), 3, status, 0,
                cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03), flags );
            flags |= CV_LKFLOW_PYR_A_READY;
			int i,k;

			glMatrixMode( GL_PROJECTION );			glLoadIdentity();			glOrtho( 0, format.width, 0, format.height, -1.0, 1.0 );			glMatrixMode( GL_MODELVIEW );			glLoadIdentity();

            for( i = k = 0; i < count; i++ )
            {
                if( add_remove_pt )
                {
                    double dx = pt.x - points[1][i].x;
                    double dy = pt.y - points[1][i].y;

                    if( dx*dx + dy*dy <= 25 )
                    {
                        add_remove_pt = 0;
                        continue;
                    }
                }
                
                if( !status[i] )
                    continue;
                
                points[1][k++] = points[1][i];
                //cvCircle( image, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0);
				cvLine( image, cvPointFrom32f(points[1][i]) , cvPointFrom32f(points[0][i]), CV_RGB(0,255,0), 1, 4 );
            }
            count = k;
        }

        if( add_remove_pt && count < MAX_COUNT )
        {
            points[1][count++] = cvPointTo32f(pt);
            cvFindCornerSubPix( grey, points[1] + count - 1, 1,
                cvSize(win_size,win_size), cvSize(-1,-1),
                cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03));
            add_remove_pt = 0;
        }

        CV_SWAP( prev_grey, grey, swap_temp );
        CV_SWAP( prev_pyramid, pyramid, swap_temp );
        CV_SWAP( points[0], points[1], swap_points );
        need_to_init = 0;		
	}		
	videoMan.updateTexture( videoInput, image->imageData ); //Update the texture of the renderer
	videoMan.renderFrame( videoInput ); //render the image in the screen			//Check if the video file (input number 0) has reached the end		if ( videoMan.getPosition( videoInput ) == videoLength )		videoMan.goToFrame( videoInput, 0 ); //restart from the begining	glFlush();    glutSwapBuffers();}void showHelp(){	printf("========\n");	printf("keys:\n");		printf("Esc->Exit\n");	printf("F1->Fullscreen\n");	printf("r->Detected features\n");	printf("c->Delete features\n");	printf("n->Night mode Y/N\n");	printf("Left Button->Create feature\n");	printf("========\n");}void clear(){	cvReleaseImageHeader( &frame );
    cvReleaseImage( &image );
    cvReleaseImage( &grey );
    cvReleaseImage( &prev_grey );
    cvReleaseImage( &pyramid );
    cvReleaseImage( &prev_pyramid );
	delete [] points[0];
    delete [] points[1];
    delete status;}void glutMouseFunc( int button, int state, int x, int y ){	if ( state ==  GLUT_DOWN && button == GLUT_LEFT_BUTTON )	{
		float xn = x;
		float yn = screenHeight - y;
		videoMan.screenToImageCoords( xn, yn );
		pt = cvPoint(xn,yn);
		add_remove_pt = 1;	}}int main(int argc, char** argv){
	cout << "This is the opencv example using optical flow. One video input is initialized" << endl;	
	cout << "Usage: VMwithDirectShow.exe filePath(string)" << endl;
	cout << "Example: VMwithDirectShow.exe c:\\video.avi" << endl;	cout << "If no argument is passed, a camera is initialized" << endl;		if ( argc > 1 ) 	{		fileName = argv[1];	}	glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA | GLUT_MULTISAMPLE );    glutInitWindowPosition( 0, 0 );    glutInitWindowSize( 640, 480 );    glutInit( &argc, argv );    glutCreateWindow("OpenCV LKdemo with DirectShow");    glutReshapeFunc(glutResize);    glutDisplayFunc(glutDisplay);    glutIdleFunc(glutDisplay);    glutKeyboardFunc(glutKeyboard);	glutSpecialFunc(glutSpecialKeyboard);	glutMouseFunc(glutMouseFunc);    InitializeOpenGL();		if ( !InitializeVideoMan() )	{		fprintf(stderr,"Could not initialize capturing...\n");		return -1;	}	/* allocate all the buffers */	frame = cvCreateImageHeader( cvSize( format.width, format.height ), 8, (int)format.nChannels );	
    image = cvCreateImage( cvGetSize(frame), 8, 3 );
    image->origin = frame->origin;
    grey = cvCreateImage( cvGetSize(frame), 8, 1 );
    prev_grey = cvCreateImage( cvGetSize(frame), 8, 1 );
    pyramid = cvCreateImage( cvGetSize(frame), 8, 1 );
    prev_pyramid = cvCreateImage( cvGetSize(frame), 8, 1 );
    points[0] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0]));
    points[1] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0]));
    status = (char*)cvAlloc(MAX_COUNT);
    flags = 0;		fullScreened = false;	showHelp();    glutMainLoop();	clear();    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情偷乱视频一区二区三区| 视频一区二区三区入口| 精品久久国产97色综合| 精品视频在线免费看| 91久久一区二区| 一本在线高清不卡dvd| 99国产精品久久久久| aaa亚洲精品一二三区| 99精品热视频| 欧美怡红院视频| 欧美日韩大陆一区二区| 91精品国产综合久久久久久久久久| 色国产精品一区在线观看| 欧美自拍偷拍一区| 欧美日韩一区二区三区四区| 在线不卡中文字幕| 日韩欧美综合在线| 久久这里只有精品6| 国产精品人人做人人爽人人添| 国产精品系列在线| 亚洲一区二区在线播放相泽| 亚洲成a人v欧美综合天堂下载| 免费美女久久99| 福利电影一区二区| 欧美性极品少妇| 精品成人一区二区三区四区| 国产精品网曝门| 亚洲国产三级在线| 国产一区欧美日韩| 色综合久久66| 日韩欧美成人午夜| 国产精品第13页| 日韩高清不卡一区二区三区| 国产一区二区影院| 在线免费观看一区| 久久在线观看免费| 亚洲天堂网中文字| 精品一区二区在线看| 99久久99久久精品免费观看| 在线不卡一区二区| 国产精品久久久久久久岛一牛影视| 亚洲一二三四区| 国产成a人无v码亚洲福利| 色欧美片视频在线观看 | 欧美韩日一区二区三区四区| 亚洲美女屁股眼交| 国产精品亚洲专一区二区三区| 91成人国产精品| 日本一区二区三区在线不卡| 日韩一区精品视频| 99re66热这里只有精品3直播| 91精品久久久久久久久99蜜臂 | 91麻豆国产自产在线观看| 欧美日韩另类国产亚洲欧美一级| 久久精品人人做人人综合| 亚洲影视在线播放| 成人av影院在线| 精品成人免费观看| 免费精品视频在线| 欧美高清hd18日本| 亚洲图片有声小说| 91在线精品一区二区三区| 久久久久国产精品麻豆ai换脸 | 精品国产乱码久久久久久久久| 亚洲影院在线观看| 色香蕉久久蜜桃| 中文字幕精品一区二区精品绿巨人 | 亚洲午夜私人影院| 色综合夜色一区| 亚洲视频一二三区| av不卡在线播放| 中文字幕不卡在线| 成人高清视频免费观看| 久久久www成人免费毛片麻豆| 久久机这里只有精品| 日韩欧美一区二区久久婷婷| 日本伊人色综合网| 制服丝袜国产精品| 91影院在线观看| 国产精品人妖ts系列视频| 国产精品538一区二区在线| 精品999在线播放| 国产在线精品国自产拍免费| 337p日本欧洲亚洲大胆色噜噜| 韩国成人福利片在线播放| 精品乱人伦小说| 国产成人高清视频| 中文字幕一区二区在线观看| 91网站视频在线观看| 一区二区三区精密机械公司| 欧美在线一区二区三区| 五月综合激情网| 精品福利在线导航| 成人做爰69片免费看网站| 亚洲欧美日韩一区| 欧美精品xxxxbbbb| 国产一区二区久久| 中文字幕亚洲精品在线观看 | 日本韩国一区二区| 亚洲va天堂va国产va久| 欧美成人bangbros| 成人av影视在线观看| 亚洲尤物在线视频观看| 日韩欧美在线观看一区二区三区| 色综合久久久久网| 日韩福利视频网| 国产色爱av资源综合区| 一本一本久久a久久精品综合麻豆| 一区二区三区国产豹纹内裤在线| 欧美日韩日日摸| 国产福利一区在线观看| 一区二区三区产品免费精品久久75| 欧美日韩和欧美的一区二区| 精品一区二区三区香蕉蜜桃| 亚洲视频在线一区| 欧美大片在线观看一区二区| www.成人在线| 另类欧美日韩国产在线| 亚洲人午夜精品天堂一二香蕉| 欧美精选在线播放| av一区二区三区在线| 日本欧美韩国一区三区| 亚洲乱码日产精品bd| 26uuu久久综合| 欧美日韩精品高清| 97精品久久久久中文字幕| 久久国产福利国产秒拍| 一区二区三区成人| 国产精品人妖ts系列视频| 日韩一级二级三级| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 色88888久久久久久影院按摩 | 国产精品一二三四五| 亚洲网友自拍偷拍| 最新国产成人在线观看| 国产精品久久福利| 欧美mv日韩mv国产网站| 欧美久久一二区| 欧美日韩一区二区三区在线| gogo大胆日本视频一区| 国产精一区二区三区| 免费在线观看一区| 日日骚欧美日韩| 亚洲高清三级视频| 亚洲尤物视频在线| 一区二区三区中文在线| 亚洲人成精品久久久久| 国产精品伦一区二区三级视频| 国产亚洲视频系列| 久久久亚洲精品一区二区三区| 欧美大黄免费观看| 日韩一二三区视频| 欧美www视频| 日韩欧美国产综合| 精品国产一区二区精华| 亚洲精品在线免费观看视频| 日韩精品中午字幕| 久久综合国产精品| 国产网站一区二区| 国产精品久久久久久福利一牛影视| 亚洲国产成人私人影院tom| 国产精品无人区| 亚洲男人天堂一区| 亚洲成人av一区二区三区| 亚洲成人av一区二区| 秋霞国产午夜精品免费视频| 美日韩黄色大片| 国产成人av福利| 91蜜桃免费观看视频| 欧美丝袜丝交足nylons图片| 欧美在线观看一区| 中文字幕中文字幕一区| 亚洲视频免费观看| 爽好多水快深点欧美视频| 麻豆一区二区三| 成人免费毛片aaaaa**| 色偷偷88欧美精品久久久| 欧美日韩亚洲高清一区二区| 欧美xxxxxxxx| 成人免费在线播放视频| 午夜不卡在线视频| 国产精品一二三在| 欧美视频一区二区在线观看| 欧美一区二区三区在线视频| 久久九九国产精品| 一区二区三区不卡视频在线观看 | 欧美高清在线一区二区| 中文字幕永久在线不卡| 手机精品视频在线观看| 国产精品一区不卡| 欧美日韩午夜在线| 国产午夜精品久久久久久免费视| 亚洲女子a中天字幕| 麻豆国产一区二区| 色呦呦日韩精品| 久久伊人蜜桃av一区二区| 99久久婷婷国产综合精品 | 日韩一区二区免费视频| 日韩vs国产vs欧美| 成人一区二区三区视频|