Newsgroup: it.comp.lang.visual-basic
Titolo: richiesta con risposta difficile -> Getpixel su capCreateCaptureWindow

Ho creato una picturebox per metterci sopra le immagini catturate dalla mia 
webcam con la api capCreateCaptureWindow.
Tutto funziona a meraviglia.
Ora il mio problema è quello di trovare il colore di un certo punto sui 
frame catturati.
Pensavo fosse facile e ho provato ingenuamente con picture1.point(x,y). 
Inservibile perche' l'handle della finestrella dei frame dentro la 
picturebox cambia.
Allora ho provato a trovare il colore con GetPixel(Handle,x,y) ma mettendo 
come handle quello della Picturebox funziona (fino a quando non parte 
capCreateCaptureWindow.), mettendo come handle quello della finestrella 
creata da capCreateCaptureWindow dentro la picturebox mi da sempre -1 come 
risultato e non si schioda di li. ??
Dato che alcuni programmi cattura-filmati non funzionano se sono abilitate 
le accelerazioni video ho provato anche a vedere se eliminandole magari il 
getpixel sui frame catturati dava quache risultato. Niente!
E qui viene la domanda: come faccio a recuperare in tempo reale il colore di 
un pixel da un frame catturato con capCreateCaptureWindow.

un pixel da un frame catturato con capCreateCaptureWindow.
alcune idee,
prima di tutto l'handle quello della finestrella 
creata da capCreateCaptureWindow č 0 o č un numero >0 ?
se ti manca l'handle puoi usare Findwindowex oppure Getwindowfrompoint
io a mio tempo se non ricordo male
disattivavo l'accelerazione hardware in due punti
(ed inoltre le cosa cambiavano nei diversi OS)
se comunque l'immagine la vedi sullo schermo, 
puoi prenderne il pixel facendo una cattura con "una rete piů grossa",
cioč andando a prenderlo dall hdc dello Screen, 
aiutandoti con le coordinate relative ed assolute
prova poi a dare prima un .Refresh  o  l'UpdateWindow
(e c'č anche AutoRedraw da impostare o non impostare)
prima della cattura

 prima della cattura
provato, purtroppo non cambia niente.

 wrote:
non so, 
come disattivi l'accelerazione?
a mano  o da codice?
es a mano (su w98): 
Pannello di controllo schermo, impostazioni, avanzate,prestazioni
oppure (su XP?)
Pannello di controllo > Sistema > Prestazioni > Grafica
ecco, mi sembra di ricordare, che
oltre all 'Accelerazione grafica'
ci potrebbe essere anche l 'Overlay' da disabilitare (che non so se è la
stessa cosa, ma se me la ricordo un ruolo lo aveva):
es:
Pannello di controllo, Schermo, Impostazioni , Avanzate, Overlay
in genere
le due disabilitazioni di cui parliamo si possono fare: 
dal programma che stai usando di riproduzione video (se ha l'opzione)
o anche 
dal pannello di controllo, 
potresti provare le due strade anche assieme
dopo i cambiamenti per prova potresti
chiudere l'app, chiudere l'ide, riavviare Windows...

 chiudere l'app, chiudere l'ide, riavviare Windows...
Credo che il problema sia più nel trattamento delle procedure in 
programmazione che un qualcosa di relativo alle impostazioni di xp.
Ho infatti un programminodi pochi K fatto in visual C (di cui non posseggo i 
sorgenti purtroppo) che si chiama virtual Theremin.
Il programma prende immagini della webcam e cerca un colore vicino a quello 
della pelle per capire dove stanno le mani di una persona (ovviamente con un 
getpixel).
Io avrei bisogno di fare una cosa simile, però i problemi sono quelli che ho 
descritto.
Arrivo a visualizzare le immagini della webcam ma poi quando cerco di 
trattarle: salvarle, copiarle su un altra picture, rilevare il colore di un 
pixel all'interno di un frame catturato, tutte le funzioni comunemente usate 
mi danno buca.
Il programma virtual Theremin tra le altre cose funziona anche in presenza 
di accelerazione hardware! Cosa di cui bisognerebbe tener di conto. 

 wrote:
cut
...perň se su schermo l'immagine la hai
il problema secondo me č al 99% risolto,
basta usare bene le api, gli handle e gli hdc
(il problema grosso č quando nel riquadro
dove deve apparire l'immagine... l'immagine non ce l'hai!)
al momento non so dirti di piů

 al momento non so dirti di più
ok, grazie comunque.