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

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

?? lktrack.cpp

?? 基于Opencv的人體運動檢測系統(tǒng)
?? CPP
字號:


#ifdef _CH_
#pragma package <opencv>
#endif

#ifndef _EiC
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <ctype.h>
#include "skelecton.h"
#include "skeletons.h"
#include "kalman.h"
#include "OpenGL.h"
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>

#endif




IplImage *image = 0, *grey = 0, *prev_grey = 0,
 *pyramid = 0, *prev_pyramid = 0,*motion_track_img = 0, *swap_temp;


int win_size = 10;
const int MAX_COUNT = 13;  //骨架節(jié)點數
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;
int pause = 0;


CvPoint pt;
OpenGL *pgl;
Vector3f  vt1,vt2;
void CALLBACK display3()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	
	glLoadIdentity();
		pgl->clear ();
	glColor3f(0.4f,0.5f,0.7f);
		//auxSolidCylinder(0.2,1.0);
		//pgl->draw2point (vt1,vt2);
		pgl->display ();
	//glFlush();

}

void opengl_test()
{
	pgl = new OpenGL();
	pgl->Init();

	  vt1.x = 200;
	  vt1.y = 200;
	  vt1.z = 200;
	  vt2.x = 0;
	  vt2.y = 0;
	  vt2.z = 0;
	// auxMainLoop(display3);

	for(;;) display3();
	delete pgl;


}



void on_mouse( int event, int x, int y, int flags )
{
    
	
	if( !image )
        return;

    if( image->origin )
        y = image->height - y;

    if( event == CV_EVENT_LBUTTONDOWN )
    {
        pt = cvPoint(x,y);
        add_remove_pt = 1;
    }
}



int cvmain( int argc, char** argv )
{
    //opengl_test();
	//exit(0);

	skelecton *ske = new skelecton();
	skelectons *skes = new skelectons();
	kalman *bone_kalmans = new kalman[MAX_COUNT];
	
	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 );
		capture = cvCaptureFromFile("e:\\MyFirstPoser.AVI");
    else if( argc == 2 )
        capture = cvCaptureFromAVI( argv[1] );

    if( !capture )
    {
        fprintf(stderr,"Could not initialize capturing...\n");
        return -1;
    }

    printf( "Hot keys: \n"
            "\tESC - quit the program\n"
            "\tr - auto-initialize tracking\n"
            "\tc - delete all the points\n"
            "\tn - switch the \"night\" mode on/off\n"
			"\tp - pause on/off\n"
            "\n" );

    cvNamedWindow( "LkDemo", 1 );
	cvNamedWindow( "MotionTrackDemo", 0 );
    cvSetMouseCallback( "LkDemo", on_mouse );

    for(;;)
    {
        IplImage* frame = 0;
		
        int i, k, c;

        if(pause)
			frame = image ;		
		else 
			frame = cvQueryFrame( capture );

        if( !frame ) break;

        if( !image )
        {
            /* allocate all the buffers */
            image = cvCreateImage( cvGetSize(frame), 8, 3 );
            image->origin = frame->origin;
			
			motion_track_img = cvCreateImage( cvGetSize(frame), 8, 3 );
			motion_track_img->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;
        }

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

        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 );
            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;
            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];
					switch(i)
						{
						case 0:							
							ske->CorrectPosition ("neck",points[1][i],bone_kalmans[i]);		
							break;
						case 1:							
							ske->CorrectPosition ("head",points[1][i],bone_kalmans[i]);	
							break;
						case 2:							
							ske->CorrectPosition ("rShoulder",points[1][i],bone_kalmans[i]);	
							break;
						case 3:
							ske->CorrectPosition ("lShoulder",points[1][i],bone_kalmans[i]);								
							break;
						case 4:							
							ske->CorrectPosition ("rElbow",points[1][i],bone_kalmans[i]);
							break;
						case 5:
							ske->CorrectPosition ("lElbow",points[1][i],bone_kalmans[i]);
							break;
						case 6:
							ske->CorrectPosition ("rWrist",points[1][i],bone_kalmans[i]);
							break;
						case 7:
							ske->CorrectPosition ("lWrist",points[1][i],bone_kalmans[i]);
							break;
						case 8:
							ske->CorrectPosition ("Waist",points[1][i],bone_kalmans[i]);
							break;
						case 9:
							ske->CorrectPosition ("rKnee",points[1][i],bone_kalmans[i]);
							break;
						case 10:
							ske->CorrectPosition ("lKnee",points[1][i],bone_kalmans[i]);
							break;
						case 11:
							ske->CorrectPosition ("rAnkle",points[1][i],bone_kalmans[i]);
							break;
						case 12:
							ske->CorrectPosition ("lAnkle",points[1][i],bone_kalmans[i]);
							break;
						}
                cvCircle( image, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0);
            }
            count = k;
        }
		
		//			
		skelecton *pske;
		pske = skes->get_previous_skelecton ();
		if(pske!=NULL) 	ske->set_previous_skelecton (pske);
		//ske->draw3D(motion_track_img); 
		ske->drawOpenGL3D(image); 
		skes->add (ske);  //不需要每次都保存,應該隔單位時間保存一次
		//skes->test ();

        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;
			bone_kalmans[count-1].init_kalman (points[1][count-1].x,0,points[1][count-1].y,0);
			ske->CalcLengthRatio (count,points[1][count-1]);
        }

        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;
        cvShowImage( "LkDemo", image );
		cvShowImage( "MotionTrackDemo", motion_track_img );

        c = cvWaitKey(10);
		//printf("%c,%d",c,c);
        if( c == 'q' )
            break;
        switch( c )
        {
        case 'r':
            need_to_init = 1;
            break;
        case 'c':
            count = 0;
			ske->reset();
            break;
        case 'n':
            night_mode ^= 1;
            break;
		case 'p':
            pause ^= 1;
            break;
		case 'o':            
			if(ske->ske_pause)  ske->ske_pause= false;
			else ske->ske_pause= true;
            break;
		case 'i':            
			ske->view_up();
			break;
		case 'k':            
			ske->view_down();
			break;
		case 'j':            
			ske->view_left();
			break;
		case 'l':            
			ske->view_right();
			break;
        default:
            ;
        }

    }

    cvReleaseCapture( &capture );
    cvDestroyWindow("LkDemo");
	
	delete ske;
	ske = NULL;
	delete skes;
	skes = NULL;
	delete []bone_kalmans;
	
    return 0;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本中文字幕不卡| 欧美麻豆精品久久久久久| 色哟哟亚洲精品| 欧美成人r级一区二区三区| 亚洲欧美另类小说视频| 国内成人自拍视频| 欧美精品久久久久久久久老牛影院| 久久香蕉国产线看观看99| 亚洲va欧美va人人爽| 99麻豆久久久国产精品免费 | 亚洲综合在线电影| 国产99精品在线观看| 91麻豆精品国产综合久久久久久| 国产精品久线观看视频| 精品一区二区三区久久久| 欧美日韩综合在线| 亚洲欧洲无码一区二区三区| 国产乱码一区二区三区| 日韩三级.com| 麻豆精品视频在线观看| 91麻豆精品国产91| 亚洲成人免费看| 欧洲av在线精品| 亚洲综合色丁香婷婷六月图片| 丁香婷婷综合色啪| 国产欧美精品在线观看| 国产精选一区二区三区| 久久伊人中文字幕| 国产精品影视天天线| 久久久久国产精品人| 国产乱码字幕精品高清av | 亚洲视频中文字幕| 99久精品国产| 一区二区三区四区在线播放| 色综合天天综合网国产成人综合天 | 麻豆91免费观看| 欧美日韩久久不卡| 亚洲狠狠爱一区二区三区| 在线观看区一区二| 亚洲国产aⅴ成人精品无吗| 欧美老肥妇做.爰bbww视频| 午夜伊人狠狠久久| 欧美日韩国产精选| 麻豆91免费观看| 2023国产一二三区日本精品2022| 国产在线视视频有精品| 久久九九久久九九| 99精品在线免费| 亚洲成人福利片| 欧美va亚洲va国产综合| 六月丁香婷婷久久| 中文子幕无线码一区tr| 91蜜桃视频在线| 亚洲aaa精品| 久久久久久久久97黄色工厂| 成人免费视频一区二区| 亚洲一区二区在线免费看| 欧美一级片在线| 国产不卡高清在线观看视频| 亚洲美女电影在线| 欧美精品久久99久久在免费线| 精品一二三四在线| 中文字幕在线观看一区二区| 欧美日韩国产综合视频在线观看| 美女国产一区二区| 中文在线一区二区| 在线成人av影院| 国产不卡视频在线播放| 亚洲一级二级三级| 国产婷婷精品av在线| 在线免费观看日本一区| 国产米奇在线777精品观看| 一区免费观看视频| 精品伦理精品一区| 色婷婷激情综合| 国产在线精品一区二区三区不卡 | 美女看a上一区| 国产精品国产三级国产普通话蜜臀 | 成人国产精品视频| 免费在线看成人av| 一区二区三区四区乱视频| 欧美精品一区二区三区四区| 欧洲生活片亚洲生活在线观看| 精品一二三四区| 亚洲高清在线精品| 久久品道一品道久久精品| 欧美三级日本三级少妇99| 99精品国产91久久久久久| 激情文学综合网| 免费人成网站在线观看欧美高清| 亚洲精品国产视频| 国产日韩欧美精品综合| 91精品一区二区三区在线观看| 91美女蜜桃在线| 成人精品一区二区三区四区 | 99久久99久久综合| 国产精品亚洲专一区二区三区| 日韩综合小视频| 夜夜嗨av一区二区三区中文字幕| 国产欧美日韩久久| 久久久午夜电影| 久久麻豆一区二区| 久久伊99综合婷婷久久伊| 欧美一级夜夜爽| 制服视频三区第一页精品| 欧美另类久久久品| 欧美色视频一区| 在线观看一区日韩| 在线观看一区不卡| 欧美性生活影院| 欧洲精品视频在线观看| 91成人国产精品| 欧美唯美清纯偷拍| 欧美人与z0zoxxxx视频| 欧美日韩小视频| 欧美一区二区人人喊爽| 91精品国产麻豆| 欧美一激情一区二区三区| 日韩一区二区在线看| 亚洲精品在线网站| 国产亚洲一区二区三区四区| 欧美激情中文不卡| 亚洲私人影院在线观看| 亚洲欧洲一区二区三区| 亚洲蜜臀av乱码久久精品| 夜色激情一区二区| 亚洲成人免费影院| 蜜臀va亚洲va欧美va天堂| 麻豆精品一二三| 国产成人在线观看免费网站| 国产+成+人+亚洲欧洲自线| proumb性欧美在线观看| 在线观看精品一区| 日韩美女天天操| 国产三级精品三级在线专区| 亚洲欧美日韩国产综合| 亚洲不卡一区二区三区| 久久国产精品99精品国产| 福利电影一区二区三区| 色一情一乱一乱一91av| 欧美一区二区女人| 欧美激情在线免费观看| 一区二区三区加勒比av| 日本中文在线一区| 国产69精品久久久久毛片| 欧美性视频一区二区三区| 精品久久人人做人人爰| 国产精品久久久久久久岛一牛影视| 亚洲综合一区在线| 国产精品综合在线视频| 在线一区二区三区四区| 精品国产一区二区精华| 一区二区三区高清不卡| 老汉av免费一区二区三区 | 欧美酷刑日本凌虐凌虐| 久久综合成人精品亚洲另类欧美 | 日韩不卡免费视频| 成人精品鲁一区一区二区| 欧美日韩综合在线| 欧美经典一区二区| 爽好多水快深点欧美视频| 岛国一区二区三区| 91精品国产综合久久久蜜臀图片| 中文字幕日韩欧美一区二区三区| 蜜臂av日日欢夜夜爽一区| 91视频观看视频| 久久久久久免费毛片精品| 亚洲国产精品影院| 成人午夜av在线| ww亚洲ww在线观看国产| 爽好多水快深点欧美视频| 色哟哟国产精品| 国产精品美女视频| 精品一区二区日韩| 制服视频三区第一页精品| 亚洲线精品一区二区三区| 97精品电影院| 国产免费观看久久| 精品午夜一区二区三区在线观看| 在线观看视频一区二区| 亚洲视频网在线直播| 成人av一区二区三区| 精品国产污网站| 另类调教123区| 日韩写真欧美这视频| 天天亚洲美女在线视频| 欧美色图第一页| 亚洲自拍偷拍欧美| 91在线视频免费观看| 中文字幕第一区二区| 国产a久久麻豆| 国产精品日产欧美久久久久| 国产盗摄女厕一区二区三区| 久久久精品国产免大香伊| 精品一区二区三区免费毛片爱| 日韩欧美的一区| 久久国产日韩欧美精品| 精品国产三级a在线观看| 久久99精品国产| wwwwww.欧美系列|