schmiddys Geschrieben 4. Januar 2009 Teilen Geschrieben 4. Januar 2009 Hallo! Ich hab mir über das SDK eines Herstellers ein Bild(Schnappschuss) von einer Kamera erzeugt, es aber nicht abgespeichert. Nun wollte ich von euch wissen, wie kann ich mir aus diesem Bild die Pixel auslesen lassen. Das Bild ist schwarz-weiß. Ich benutze Visual Studio 2005. Wäre super, wenn ihr mir einige Tipps geben könntet. Gruß Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 4. Januar 2009 Teilen Geschrieben 4. Januar 2009 Was ist ein Bild? z.B. JPEG, PNG, BMP....... Du verlierst kein Wort über das Format, das kann im Grunde von einer Datenmatrix (2D Array) bis zu einer Datei alles sein. Öffne die Datenstruktur entsprechend und Du erhälst dann meistens eine Datenmatrix Phil Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schmiddys Geschrieben 4. Januar 2009 Autor Teilen Geschrieben 4. Januar 2009 Das Format ist ein bitmap. Kannst du mir eventuell nen beispielcode dafür geben? Wäre super. Kann auch mal meinen Quellcode reinstellen. //Buffer initialisieren void InitUserBuffer( CyUserBuffer &userBuffer, CSpyder3GigEInterface *camera ) { unsigned long width=0; unsigned long height=0; unsigned long pixelWidth =0; camera->GetSizeX(width); camera->GetSizeY(height); camera->GetPixelByteSize(pixelWidth); long bufferSize = width*height*pixelWidth; userBuffer.SetBuffer( new unsigned char[bufferSize], bufferSize); } void main() { CCameraConnection camCon; // Connect printf("Verbinden...\n"); if ( camCon.Connect() ) { CSpyder3GigEInterface *camera = camCon.GetCamera(); camCon.LoadXMLFile("\\Config.xml"); // Set up Camera camera->SetExposureMode(2);// sem 2 - control line rate and exposure time // through software camera->SetLineRate(16878.0F); // Zeilenfrequenz auf 16878Hz camera->SetSizeY(1000); // Anzahl der Zeilen 1000 camera->SetExposureTime(500.0F); // Belichtungszeit auf 500 uS camera->SetPixelType( CyGrayscale8::ID); // 8 bit //Allocate Buffer CyUserBuffer userBuffer(NULL, 0); InitUserBuffer( userBuffer,camera); // Get Grabber CyGrabber &grabber = camera->GetGrabber(); // Eigenschaften des Eingabefensters unsigned long width=0; unsigned long height=0; CyDisplayEx display; camera->GetSizeX(width); camera->GetSizeY(height); display.Open( NULL, 20, 20, (unsigned short)width/2, (unsigned short)height/2 ); time_t curTime, lastTime =0; printf("Press any key to Quit\n"); while ( _kbhit() == 0) { time( &curTime ); // Snap an image and display every 5 seconds if ( curTime > lastTime + 50000 ) { // Snap an image - Wait for it if ( grabber.Grab( CyChannel(0), userBuffer, 0)== CY_RESULT_OK ) { display.Display( userBuffer.GetBuffer(), userBuffer.GetBufferSize(), (unsigned short)width, (unsigned short)height, CyGrayscale8::ID ); } } display.PumpGUIMessage(); } // Speicherplatz für den Buffer wieder frei geben delete [] userBuffer.GetBuffer(); camCon.Disconnect(); } } Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 4. Januar 2009 Teilen Geschrieben 4. Januar 2009 Das Format ist ein bitmap. "Bitmap" kann alles mögliche sein. Dieser Begriff hat mit dem Format der Daten nichts zu tun. Da du ja offenbar ein API für diese Kamera hast, schau doch einfach mal in die Dokumentation, da sollte drin stehen, in welchem Format die Daten bereitgestellt werden. Das hatte ich dir übrigens auch in deinem ersten Thread geraten. Und da geht's jetzt bitte auch weiter. Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge