Libary für Webcams??



  • Kennt jemand eine gute Libary für Webcams 😕
    Ich habe mir schon mal OpenCV angeguckt, die Bibliothek ist wirklich nicht schlecht. Aber bei OpenCV hab ich ein Problem mit den Threads. 😞 (Ich benutze "pTypes" als Thread-Libary 😋 ) Ich brauche einen Thread für die Renderung (wird von Ogre erledigt) und einen Thread für den Datentransfer mit der Webcam. Aber OpenCV scheint Mutexes (Critical Sections) zu benutzen, so dass ich nur noch 0.5 FPS beim Rendern habe. Wenn ich vor jedem neuen Transfer eine Pause (Sleep(1); ) einfüge, dann habe ich schon 15 FPS. Ich brauche also eine Libary, die mir die Bilder in einer Datenstrucktur mit den Imformationen Hoehe, Breite und BitmapGrafikDaten (unsigned char*) speichert und kompatibel mit Threads ist. Die Bilddaten bräuchte ich fpr eine Textur. Optimal wäre es wenn die Libary auch noch Motiondetection und Farberkennung unterstützt...

    Ich denke, etwas besser als OpenCv wird es wohl nicht geben, aber man kann ja mal fragen. Ich hab schon über 2 Stunden bei Sourcefoge und Google gesucht.

    Ich sage schon mal Danke...



  • es gibt die Standard Windows-Schnittstelle..

    capCreateCaptureWindow() um mal so nen begriff zum googlen zu werfen..

    Damit kann man ganz gut und relativ einfach die Cam auslesen..



  • Danke für deine Antwort, aber ich habe das Problem lösen können. An die Standart Webcam Schnittstelle von Microsoft habe ich auch schon gedacht, aber sie bietet löeider keine Motion Detection an. 😉 Sonst müsste ich alles selber programmieren und das wäre natürlich alles sehr zeitaufwendig.

    Das:

    class WebcamThread : public pt::thread
    {
    protected:
    	CvCapture* mCapture;
    	IplImage *mThreadImage;
    	IplImage *mCopyImage;
    public:
    	WebcamThread() : thread(false)
    	{	
               mCapture = cvCaptureFromCAM(0);	
    	}
    	void execute()
    	{		
    		if(mCapture)
    		{
    			cout << "mCapture != NULL" << endl;
    			cout << "Thread - execute()" << endl;
    			mThreadImage = cvQueryFrame( mCapture );
    			cout << "Image Captured" << endl;
    		}
    	}
    	void cleanup()
    	{
    		cout << "CleanUp()" << endl;		
    	}
    	~WebcamThread()
    	{
    		waitfor();	
            cvReleaseCapture( &mCapture );	
    	}
    };
    

    muss so umgeschrieben werden....

    class WebcamThread : public pt::thread
    {
    protected:
    	CvCapture* mCapture;
    	IplImage *mThreadImage;
    	IplImage *mCopyImage;
    public:
    	WebcamThread() : thread(false)
    	{		
    	}
    	void execute()
    	{
    		mCapture = cvCaptureFromCAM(0);
    		if(mCapture)
    		{
    			cout << "mCapture != NULL" << endl;
    			cout << "Thread - execute()" << endl;
    			mThreadImage = cvQueryFrame( mCapture );
    			cout << "Image Captured" << endl;
    		}
    	}
    	void cleanup()
    	{
    		cvReleaseCapture( &mCapture );
    		cout << "CleanUp()" << endl;		
    	}
    	~WebcamThread()
    	{
    		waitfor();		
    	}
    };
    

Anmelden zum Antworten