Plaatje van camera opslaan in bestand.

Status
Niet open voor verdere reacties.

Brandts

Gebruiker
Lid geworden
29 aug 2007
Berichten
103
Ik heb op mijn werk een camera aangesloten op een pc die uitgelezen moet worden. Voor dit uitlezen wordt een standaard bijgeleverd programma gebruikt die het beeld van de camera opslaat in het geheugen van de pc.
Nu wil ik dat het beeld niet in het geheugen komt maar weggeschreven wordt naar een bestand op de harde schijf (dit mag steeds hetzelfde bestand zijn). Mijn probleem is dat ik totaal geen verstand heb van C++ en om de taal voor dit probleempje te leren vind ik ook wat overdreven. Vandaar de vraag of iemand me hiermee wil helpen door een stukje code toe te voegen aan de originele code uit de bijlage :o
 

Bijlagen

dan zul je toch echt de documentatie moeten doorlezen van de bijgevoegde SDK. Al kunnen wij C++ programmeren, we kennen niet iedere SDK die er ooit is uitgebracht uit het hoofd :)

In lekentaal: Er zijn apparaat-specifieke commando's die je hiervoor moet gebruiken. Deze bestaan niet in standaard c++.

Misschien kun je ergens van hun site een demo-tje downloaden of iets dergelijks?
 
Die documentatie heb ik al eens doorzocht (zijn 300 pagina's dus heb niet alles gelezen) maar daar stond niet direct iets in om een plaatje naar de HD te schrijven, vandaar dat ik naar dit forum ben gekomen :)

Ik had gehoopt dat er standaard commando's waren om een plaatje uit het geheugen te lezen en die op te slaan naar een bestand.

Dit programmatje is een voorbeeld van hun site, maar dit voorbeeld was bijna precies wat ik wilde hebben. Een voorbeeld voor het plaatje weg te schrijven is er niet :(

Toch bedankt voor je reactie!
 
Ik ben op dit moment al een stuk verder met mijn probleem. Ik heb nu een programma dat de camera uitleest en het beeld van de camera op het scherm laat zien. Met een druk op een knop kan het beeld van de camera opgeslagen worden naar een bestand. Het enigste wat nu nog veranderd moet worden is dat met een druk op de knop het beeld continu wordt weggeschreven naar een bestand totdat het programma handmatig wordt stopgezet. Is er iemand die me hiermee kan helpen?

Het programma dat ik nu heb met bijbehorende bestanden is hier te vinden:
http://www.sendspace.com/file/tt4u97

Een programming guide van de gebruikte SDK is hier te vinden, mocht dit nodig zijn:
http://www.baslerweb.com/downloads/17299/AW00013105000_pylon_Prog_Guide_and_API_Ref.pdf

Hopelijk hebben jullie hier meer aan :thumb:
 
Laatst bewerkt:
zou je de code hier gewoon kunnen posten aub? Ik ben er niet zo'n fan van om willekeurige bestanden van internet te downloaden als je snapt wat ik bedoel ;)
 
Natuurlijk, het probleem is alleen dat in het programma veel *.h-bestanden aangeroepen worden en ik niet precies weet waar het opslaan van het plaatje zich bevindt. Volgens mij zijn deze 2 bestanden de belangrijkste waar de handelingen in gebeuren (dit zijn oorspronkelijk *.h-bestanden).
 

Bijlagen

Ik ben net zelf eens een cursus C++ gestart om het programma wat beter te begrijpen. Ik heb het idee dat in het bijgevoegde bestand alle handelingen worden verricht om het plaatje op te slaan. Het enigste wat ik nog niet snap is hoe deze code aangeroepen wordt. Kunnen jullie hier iets mee?
 

Bijlagen

Je zegt dat het met een druk op de knop gesaved kan worden. Dan moet je alleen kijken wat er gebeurd als die knop ingedrukt wordt! (staat niet in deze files). Er zal dan zoiets staan van:
Code:
CButton1::OnClicked(.....)
{
     //HIER staat de functie die je moet hebben
}
Cbutton1 kan bij jou anders heten, dat kan ik zo ook niet zien
 
Een OnClicked event kan ik niet vinden. Nadat ik me zelf de basis van C++ heb geleerd ben ik gaan zoeken en kwam ik het volgende stukje code tegen:

Code:
// store image as BMP, if button was pressed
						if (m_bSaveImage)
						{
							CString Buffer;
							PixelType pixFmt = m_pBufferList[idxGrabbedBuffer]->GetFormat ().PixelFormat;
							if (pixFmt == PixelType_Mono10 ||
								pixFmt == PixelType_Mono12 ||
								pixFmt == PixelType_Mono16 ||
								pixFmt == PixelType_Mono12packed)
							{
								Buffer.Format ("image_%02d.tif", m_imageCnt);
								m_pBufferList[idxGrabbedBuffer]->StoreTIFF_Mono16 ((const char *) Buffer);
							}
							else if (pixFmt == PixelType_RGB12packed ||
									 pixFmt == PixelType_BGR12packed)
							{
								Buffer.Format ("image_%02d.png", m_imageCnt);
								m_pBufferList[idxGrabbedBuffer]->StorePng_RGB48 ((const char *) Buffer);
							}
							else
							{
								Buffer.Format ("image_%02d.bmp", m_imageCnt);
								m_ImageControl.SaveImage (Buffer);
							}
							m_bSaveImage = false;
						}
Ik heb het idee dat m_bSaveImage de waarde van de button aangeeft. Ik dacht dus als ik "if" in "while" verander en de regel "m_bSaveImage = false;" weglaat dat het plaatje continu wordt opgeslagen totdat de waarde van "m_bSaveImage" weer false wordt (hoe deze op false wordt gezet maakt me niet eens zoveel uit, voor mijn part stopt hij pas zodra ik het hele programma afsluit). Ik dacht dus als ik deze code build zou het misschien kunnen werken.

Toen kwam het volgende probleem; o.a. "afxwin.h" kon niet gevonden worden. Even googlen leert me dat ik MFC mis. Ik heb vervolgens via http://www.koders.com/cpp/fid2CA6309318DE5069A22713F963329DBC0FB0BEE6.aspx de benodigde h-bestanden kunnen downloaden en het weer een build proberen te maken.

Nu komen de volgende foutcodes over CCmdTarget.h tevoorschijn:
Code:
C:/Dev-Cpp/include/CCmdTarget.h:191: error: storage size of `msgEntries' isn't known
C:/Dev-Cpp/include/CCmdTarget.h:191: error: storage size of `msgEntries' isn't known
C:/Dev-Cpp/include/CCmdTarget.h:193: error: virtual outside class declaration

C:/Dev-Cpp/include/CCmdTarget.h:199: error: `thisClass' has not been declared
C:/Dev-Cpp/include/CCmdTarget.h:199: error: redefinition of `OFCMSGMAP msgMap'
C:/Dev-Cpp/include/CCmdTarget.h:189: error: `OFCMSGMAP msgMap' previously declared here
C:/Dev-Cpp/include/CCmdTarget.h:201: error: `baseClass' has not been declared
C:/Dev-Cpp/include/CCmdTarget.h:201: error: `thisClass' has not been declared
C:/Dev-Cpp/include/CCmdTarget.h:203: error: `thisClass' has not been declared
C:/Dev-Cpp/include/CCmdTarget.h:203: error: redefinition of `OFCMSGENTRY msgEntries[]'
C:/Dev-Cpp/include/CCmdTarget.h:191: error: `<typeprefixerror> msgEntries' previously declared here
C:/Dev-Cpp/include/CCmdTarget.h:223: error: expected unqualified-id before '{' token
C:/Dev-Cpp/include/CCmdTarget.h:223: error: expected `,' or `;' before '{' token
C:/Dev-Cpp/include/CCmdTarget.h:223: error: expected unqualified-id before ',' token

C:/Dev-Cpp/include/CCmdTarget.h:233: error: expected unqualified-id before '{' token
C:/Dev-Cpp/include/CCmdTarget.h:233: error: expected `,' or `;' before '{' token
C:/Dev-Cpp/include/CCmdTarget.h:235: error: expected unqualified-id before ',' token
C:/Dev-Cpp/include/CCmdTarget.h:241: error: expected unqualified-id before '{' token
C:/Dev-Cpp/include/CCmdTarget.h:241: error: expected `,' or `;' before '{' token
C:/Dev-Cpp/include/CCmdTarget.h:241: error: expected unqualified-id before ',' token
C:/Dev-Cpp/include/CCmdTarget.h:247: error: expected unqualified-id before '{' token
C:/Dev-Cpp/include/CCmdTarget.h:247: error: expected `,' or `;' before '{' token
C:/Dev-Cpp/include/CCmdTarget.h:247: error: expected unqualified-id before ',' token
C:/Dev-Cpp/include/CCmdTarget.h:253: error: expected unqualified-id before '{' token

C:/Dev-Cpp/include/CCmdTarget.h:253: error: expected `,' or `;' before '{' token
C:/Dev-Cpp/include/CCmdTarget.h:253: error: expected unqualified-id before ',' token
C:/Dev-Cpp/include/CCmdTarget.h:261: error: expected unqualified-id before "struct"
C:/Dev-Cpp/include/CCmdTarget.h:261: error: expected `,' or `;' before "struct"
C:/Dev-Cpp/include/CCmdTarget.h:281: error: `AFX_CMDHANDLERINFO' has not been declared
C:/Dev-Cpp/include/CCmdTarget.h:281: error: ISO C++ forbids declaration of `pCHI' with no type
Hier zit ik vast. Hoe meer ik me erin verdiep hoe minder ik het snap :confused:
 
Je hebt gelijk over de variable, alleen zit er nog wel een foutje in je logica, want als je continu wilt blijven opslaan, zul je toch echt af en toe een nieuw plaatje moeten binnenhalen van de camera, anders sla je de heletijd hetzelfde op:
Code:
while (1) //altijd
{
    haal plaatje op
    sla plaatje op
}

Al je foutmeldingen komen doordat je geen MFC hebt. Een headertje downloaden lost dit probleem helaas niet op. Op de microsoft site kun je een trial versie van Visual Studio PRO downloaden. Deze mag je 90 dagen gebruiken en hierbij zit MFC. Ik raad je aan die even te downloaden/installeren
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan