Quantcast
Channel: OpenCV Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 41027

PS3 Eye Camera Color based tracking

$
0
0
Hi, I want track multiple object.I buy 4 camera licence but i cant find how can i track color based object position.I am traying change Face tracker code but when i run this code i see gray 2 screen.Where is my error ? My code is in Run Method ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // This file is part of CL-EyeMulticam SDK // // C++ CLEyeFaceTracker Sample Application // // For updates and file downloads go to: http://codelaboratories.com // // Copyright 2008-2012 (c) Code Laboratories, Inc. All rights reserved. // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include #include "opencv2\highgui\highgui.hpp" #include "opencv2\imgproc\imgproc.hpp" using namespace cv; using namespace std; // Sample camera capture and processing class class CLEyeCameraCapture { CHAR _windowName[256]; GUID _cameraGUID; CLEyeCameraInstance _cam; CLEyeCameraColorMode _mode; CLEyeCameraResolution _resolution; float _fps; HANDLE _hThread; bool _running; public: CLEyeCameraCapture(LPSTR windowName, GUID cameraGUID, CLEyeCameraColorMode mode, CLEyeCameraResolution resolution, float fps) : _cameraGUID(cameraGUID), _cam(NULL), _mode(mode), _resolution(resolution), _fps(fps), _running(false) { strcpy(_windowName, windowName); } bool StartCapture() { _running = true; cvNamedWindow(_windowName, CV_WINDOW_AUTOSIZE); // Start CLEye image capture thread _hThread = CreateThread(NULL, 0, &CLEyeCameraCapture;::CaptureThread, this, 0, 0); if(_hThread == NULL) { MessageBox(NULL,"Could not create capture thread","CLEyeMulticamTest", MB_ICONEXCLAMATION); return false; } return true; } void StopCapture() { if(!_running) return; _running = false; WaitForSingleObject(_hThread, 1000); cvDestroyWindow(_windowName); } void IncrementCameraParameter(int param) { if(!_cam) return; CLEyeSetCameraParameter(_cam, (CLEyeCameraParameter)param, CLEyeGetCameraParameter(_cam, (CLEyeCameraParameter)param)+10); } void DecrementCameraParameter(int param) { if(!_cam) return; CLEyeSetCameraParameter(_cam, (CLEyeCameraParameter)param, CLEyeGetCameraParameter(_cam, (CLEyeCameraParameter)param)-10); } void Run() { int w, h; IplImage *pCapImage; PBYTE pCapBuffer = NULL; // Create camera instance _cam = CLEyeCreateCamera(_cameraGUID, _mode, _resolution, _fps); if(_cam == NULL) return; // Get camera frame dimensions CLEyeCameraGetFrameDimensions(_cam, w, h); // Depending on color mode chosen, create the appropriate OpenCV image if(_mode == CLEYE_COLOR_PROCESSED || _mode == CLEYE_COLOR_RAW) pCapImage = cvCreateImage(cvSize(w, h), IPL_DEPTH_8U, 4); else pCapImage = cvCreateImage(cvSize(w, h), IPL_DEPTH_8U, 1); // Set some camera parameters CLEyeSetCameraParameter(_cam, CLEYE_GAIN, 10); CLEyeSetCameraParameter(_cam, CLEYE_EXPOSURE, 511); // Start capturing CLEyeCameraStart(_cam); CvMemStorage* storage = cvCreateMemStorage(0); // Get the current app path char strPathName[_MAX_PATH]; GetModuleFileName(NULL, strPathName, _MAX_PATH); *(strrchr(strPathName, '\\') + 1) = '\0'; // append the xml file name strcat(strPathName, "haarcascade_frontalface_default.xml"); CvHaarClassifierCascade* cascade = cvLoadHaarClassifierCascade(strPathName, cvSize(24, 24)); IplImage* image = cvCreateImage(cvSize(pCapImage->width, pCapImage->height), IPL_DEPTH_8U, 3); IplImage* temp = cvCreateImage(cvSize(pCapImage->width >> 1, pCapImage->height >> 1), IPL_DEPTH_8U, 3); //namedWindow("kontrol",CV_WINDOW_AUTOSIZE); int Hmindeg=170; int Hmaxdeg=179; int Smindeg=150; int Smaxdeg=255; int Vmindeg=60; int Vmaxdeg=255; /*createTrackbar("minH","kontrol",&Hmindeg;,179); createTrackbar("maxH","kontrol",&Hmaxdeg;,179); createTrackbar("minS","kontrol",&Smindeg;,255); createTrackbar("maxS","kontrol",&Smaxdeg;,255); createTrackbar("minV","kontrol",&Vmindeg;,255); createTrackbar("maxV","kontrol",&Vmaxdeg;,255);*/ int eskix = -1; int eskiy=-1; // image capturing loop while(_running) { cvGetImageRawData(pCapImage, &pCapBuffer;); CLEyeCameraGetFrame(_cam, pCapBuffer); cvConvertImage(pCapImage, image); Mat yeniframe = cvarrToMat(image); Mat cizgiresim = Mat::zeros(yeniframe.size(),CV_8UC3); Mat HSVres; cvtColor(yeniframe,HSVres,CV_BGR2HSV); Mat isres; inRange(HSVres,Scalar(Hmindeg,Smindeg,Vmindeg),Scalar(Hmaxdeg,Smaxdeg,Vmaxdeg),isres); erode(isres,isres,getStructuringElement(MORPH_ELLIPSE,Size(5,5))); dilate(isres,isres,getStructuringElement(MORPH_ELLIPSE,Size(5,5))); dilate(isres,isres,getStructuringElement(MORPH_ELLIPSE,Size(5,5))); erode(isres,isres,getStructuringElement(MORPH_ELLIPSE,Size(5,5))); Moments konum=moments(isres); double yeksen = konum.m01; double xeksen = konum.m10; double alan = konum.m00; if(alan > 10000) { int yenix = xeksen /alan; int yeniy = yeksen /alan; if(eskix >= 0 && eskiy >= 0 && yenix >=0 && yeniy>=0) { line(cizgiresim,Point(yenix,yeniy),Point(eskix,eskiy),Scalar(0,0,255),2); } eskix = yenix; eskiy = yeniy; } imshow("SB Resim",isres); yeniframe = yeniframe +cizgiresim; imshow("Orj",yeniframe); cvPyrDown(image, temp, CV_GAUSSIAN_5x5); cvClearMemStorage(storage); //if(cascade) //{ // CvSeq* faces = cvHaarDetectObjects(temp, cascade, storage, 1.2, 2, CV_HAAR_DO_CANNY_PRUNING); // for(int i = 0; i < faces->total; i++) // { // CvPoint pt1, pt2; // CvRect* r = (CvRect*)cvGetSeqElem(faces, i); // pt1.x = r->x * 2; // pt2.x = (r->x + r->width) * 2; // pt1.y = r->y * 2; // pt2.y = (r->y + r->height) * 2; // cvRectangle(image, pt1, pt2, CV_RGB(255, 0, 0), 3); // } //} // cvShowImage(_windowName, image); } cvReleaseImage(&temp;); cvReleaseImage(ℑ); // Stop camera capture CLEyeCameraStop(_cam); // Destroy camera object CLEyeDestroyCamera(_cam); // Destroy the allocated OpenCV image cvReleaseImage(&pCapImage;); _cam = NULL; } static DWORD WINAPI CaptureThread(LPVOID instance) { // seed the rng with current tick count and thread id srand(GetTickCount() + GetCurrentThreadId()); // forward thread to Capture function CLEyeCameraCapture *pThis = (CLEyeCameraCapture *)instance; pThis->Run(); return 0; } }; int _tmain(int argc, _TCHAR* argv[]) { CLEyeCameraCapture *cam[2]= { NULL }; // Query for number of connected cameras int numCams = CLEyeGetCameraCount(); if(numCams < 2) { printf("ERROR: Need two PS3Eye cameras to run\n"); return -1; } char windowName[64]; // Query unique camera uuid GUID guid = CLEyeGetCameraUUID(0); GUID guid2 = CLEyeGetCameraUUID(1); printf("Camera GUID: [x-x-x-xxxxxxxx]\n", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]); sprintf(windowName, "Face Tracker Window"); // Create camera capture object // Randomize resolution and color mode // Create camera capture objects cam[0] = new CLEyeCameraCapture(windowName,guid, CLEYE_COLOR_PROCESSED,CLEYE_VGA, 30); cam[1] = new CLEyeCameraCapture("mamut",guid2, CLEYE_COLOR_PROCESSED, CLEYE_VGA,30); printf("Starting capture\n"); cam[0]->StartCapture(); cam[1]->StartCapture(); /*cam = new CLEyeCameraCapture(windowName, guid, CLEYE_COLOR_PROCESSED, CLEYE_VGA, 30); printf("Starting capture\n"); cam->StartCapture();*/ printf("Use the following keys to change camera parameters:\n" "\t'g' - select gain parameter\n" "\t'e' - select exposure parameter\n" "\t'z' - select zoom parameter\n" "\t'r' - select rotation parameter\n" "\t'+' - increment selected parameter\n" "\t'-' - decrement selected parameter\n"); // The key will exit the program CLEyeCameraCapture *pCam = NULL; int param = -1, key; while((key = cvWaitKey(0)) != 0x1b); // Stop capture cam[0]->StopCapture(); cam[1]->StopCapture(); delete cam[0]; delete cam[1]; return 0; }

Viewing all articles
Browse latest Browse all 41027

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>