Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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ß

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

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();

}

}

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.

Gast
Dieses Thema ist für weitere Antworten geschlossen.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.