PDA

View Full Version : [C++] Acquisire una immagine dalla webcam


Mattyfog
30-08-2008, 18:54
Ciao a tutti,

volevo sapere se mi potevate dire una funzione che mi permetta di acquisire una immagine dalla webcam del computer.
Uso sempre le api win32!!!

grazie ciao

ps: tengo a precisare che il vostro suggerimento sul passare al C# è stato preso in considerazione ma sono tornato oggi dalle vacanze (e quindi non ho ancora avuto modo di studiarlo) e che non intendo abbandonare il C++ ma studiarli entrambe!

sottovento
30-08-2008, 20:03
http://www.codeproject.com/KB/cs/WebCamService.aspx
L'esempio e' in C# ma dovrebbe essere applicabile anche a C++.

Mattyfog
30-08-2008, 20:22
scusa ma non ho capito più di tanto...

tomminno
30-08-2008, 20:46
L'esempio C# citato usa l'oggetto COM WIA.
Un esempio d'uso (GetImage) lo trovi nell'SDK di Windows.
Per una panoramica su WIA 2.0 guarda qui (http://msdn.microsoft.com/en-us/library/aa361533(VS.85).aspx)

Mattyfog
30-08-2008, 20:58
ciao,

ricordo che sto usando il C++...
comunque ho cercato un esempio di getimage su msdn ed ho trovato un programma di una 20ina di file. Non è che ci capisca molto! non potete farmi un esempio? lo so che sono un po'... però ve ne sarei grato.

ciao e grazie infinite

Mattyfog
31-08-2008, 08:22
andrebbe bene anche un indirizzo più specifico ad esempi di codice:
tommino mi ha dato un link per una panoramica su WIA 2.0, se mi poteste dare un link a un esempio sarebbe il massimo.
ciao e grazie molte

dierre
31-08-2008, 08:34
Ecco qui:

http://www.codeproject.com/KB/audio-video/Cpp_DShowNET_FrameCap.aspx

Devi usare però le DirectShow. L'esempio è su Visual C++

Mattyfog
31-08-2008, 08:37
con "l'esempio è sul visual C++" intendi dire che mi servono le MFC???

dierre
31-08-2008, 08:46
Intendo che l'esempio è scritto per Visual C++. Non so se questo ti vincola in qualche modo, ho solo trovato il link, non l'ho neanche letto :asd:

Mattyfog
31-08-2008, 08:50
grazie adesso provo a guardare comunque ho visto che è stato creato con Visual C++ express edition quindi niente mfc!!!

Mattyfog
31-08-2008, 08:54
BOH capisco niente anche qui...
una settimana lontano dal computer e sono fuori...

cionci
31-08-2008, 08:56
BOH capisco niente anche qui...
Il problema è che non basta UNA API per accedere alla Webcam e prendere un frame, ma ne servono taaaaante ;)

Mattyfog
31-08-2008, 08:59
noooooooooooooooooooooo!!!! quindi è molto complicato... :muro: uff... provo ancora a dare un'occhiata in giro su internte

Mattyfog
31-08-2008, 09:08
ma ecco che quando ogni speranza è perduta trovo questo http://www.dotnethell.it/articles/WebcamCapture.aspx in italiano, che spiega come catturare un'immagine in VB.Net e in C# che sto imparando!!!
se avete soluzione non troppo complicate (dubito :D ) per il C++ dite se no m'arrangio poi con il C#!!!
grazie a tutti
ciau

dierre
31-08-2008, 09:34
BOH capisco niente anche qui...
una settimana lontano dal computer e sono fuori...

Una domanda. Ma è una questione di lingua inglese o di come è scritto il codice? Perché fino a tre post fa ti dava problemi il C# ed ora tutto bene?
Tieni presente che l'inglese è fondamentale in informatica.

Mattyfog
31-08-2008, 09:45
bè diciamo entrambe, effetivamente dopo aver visto il codice è lo stesso che mi avevi detto tu.
Comunque mi spiego meglio: una settimana fa mi è stato consigliato su questo sito il C# che però io non so ancora. Visto che non ho trovato qualcosa a me compresibile (non sono espertissimo e ho solo finito la 3° media, quindi inglese riesco giusto a comprenderlo) ho pensato che quando avrei saputo qualcosa di C# l'avrei capito.
Comunque il problema è sicuramente + il codice, con l'inglese mi arrangio...

dierre
31-08-2008, 10:20
3° media? :asd:

cucciolo!!!

Secondo me il C# è un pò troppo avanzato(nel senso che presuppone la conoscenza di alcuni concetti), il C++ è meglio, puoi imparare tutti i concetti necessari mentre programmi.

variabilepippo
31-08-2008, 10:25
Secondo me il C# è un pò troppo avanzato(nel senso che presuppone la conoscenza di alcuni concetti), il C++ è meglio


Quali sono i concetti avanzati del C# che non si ritrovano nel C++? :rolleyes:

cionci
31-08-2008, 10:26
Secondo me il C# è un pò troppo avanzato(nel senso che presuppone la conoscenza di alcuni concetti), il C++ è meglio, puoi imparare tutti i concetti necessari mentre programmi.
:eek:
Se dovessi scegliere fra C++ e C# per uno che deve iniziare a quell'età sceglierei C# tutta la vita :D

Mattyfog
31-08-2008, 11:11
non è che esistono librerie di terze (che voi sappiate) come le wx che hanno funzioni per la webcam ma più semplici?

dierre
31-08-2008, 11:26
:eek:
Se dovessi scegliere fra C++ e C# per uno che deve iniziare a quell'età sceglierei C# tutta la vita :D

Sì è più facile per iniziare per io però un percorso "didattico" lo farei col c++ in modo da scoprire poco alla volta fino ad arrivare alla programmazione ad oggetti etc...

variabilepippo
31-08-2008, 12:26
Sì è più facile per iniziare per io però un percorso "didattico" lo farei col c++ in modo da scoprire poco alla volta fino ad arrivare alla programmazione ad oggetti etc...


Io sono del parere che più un linguaggio sia low-level, meno risulti adatto per scopi didattici. Se l'obiettivo è imparare a programmare non ha senso dedicare la propria attenzione a "dettagli" (gestione manuale della memoria, mancanza di una libreria standard di classi degna di questo nome, uso dei puntatori, ...) implementativi perdendo di vista la soluzione del problema (soluzione che in altri linguaggi quasi sempre prescinde da tali dettagli).

Per imparare a guidare un'automobile non serve sapere come si progetta uno spinterogeno, per imparare a farlo c'è sempre tempo (SE proprio se ne avverte il bisogno), si studia la teoria, si fa un po' di pratica e solo dopo ci si sporca le mani alzando il cofano. :)

Mattyfog
31-08-2008, 13:22
tornando alla questione principale non sapete dirmi librerie di terze parti vero?

variabilepippo
31-08-2008, 14:03
Le soluzioni classiche sono:

- Avicap
- DirectShow
- WIA
- Librerie di terze parti (e oggetti COM)
- (Driver Twain)

cionci
31-08-2008, 14:06
Sì è più facile per iniziare per io però un percorso "didattico" lo farei col c++ in modo da scoprire poco alla volta fino ad arrivare alla programmazione ad oggetti etc...
Non sono d'accordo, meglio iniziare subito con la programmazione ad oggetti che imparare male il C++.

DanieleC88
31-08-2008, 14:07
Io sono del parere che più un linguaggio sia low-level, meno risulti adatto per scopi didattici. Se l'obiettivo è imparare a programmare non ha senso dedicare la propria attenzione a "dettagli" (gestione manuale della memoria, mancanza di una libreria standard di classi degna di questo nome, uso dei puntatori, ...) implementativi perdendo di vista la soluzione del problema (soluzione che in altri linguaggi quasi sempre prescinde da tali dettagli).

Per imparare a guidare un'automobile non serve sapere come si progetta uno spinterogeno, per imparare a farlo c'è sempre tempo (SE proprio se ne avverte il bisogno), si studia la teoria, si fa un po' di pratica e solo dopo ci si sporca le mani alzando il cofano. :)
Quoto pienamente variabilepippo. Anzi, ricordo a Mattyfog che anche io partivo in quarta con i progetti impossibili (ricordi il sistema operativo? :asd: ), alla fine c'ho imparato qualcosa, ma è ovvio che affrontare roba complessa alla tua età può portare a fallimenti e di conseguenza a delusioni. Poi in C++ proprio... :D

Insomma, ti invito solo a studiare, ma ricordandoti che c'è un tempo per ogni cosa che vuoi fare. ;)

Mattyfog
31-08-2008, 14:13
ok :)
delle librerie per ottenere l'immagine ce n'è una più semplice delle altre da utilizzare?