View Full Version : c++:estrarre valore pixel da bmp
fenomeno83
20-12-2005, 14:21
salve ragazzi.sto facendo 1 programmino in cui mi serve prendere 1 immagine bmp ed estrarre il pixel(e leggerne il valore)di coordinate (x,y).cioè voglio estrarmi da 1 bmp un intero a 24 bit ke rappresenta il valore del pixel (x,y)dell'immagine.quali sn le istruzioni x caricare sta immagine e estrarne 1 pixel?grazie
ps:uso visual c++
[...]
prova a trovare qualcosa a partire da: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_62uq.asp
fenomeno83 fratello di Fenomeno85? :D
Se non ho capito male la funzione che cerchi è GetPixel (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_0rho.asp)(), che però ritorna il colore del pixel, non un intero a 24 bit (ma poi che valore dovrebbe avere questo intero? E gli interi non sono 32 bit?)
fenomeno83
20-12-2005, 17:48
no io voglio il valore intero a 24 bit del pixel di posizione (x,y).nessuno mi sa dare maggiori delucidazioni?grazie
no io voglio il valore intero a 24 bit del pixel di posizione (x,y).nessuno mi sa dare maggiori delucidazioni?grazie
sbircia in questo sorgente:
http://www.codeproject.com/dialog/ColorTake.asp
al limite: http://www.codeproject.com/bitmap/#Bitmaps
Nel caso tu abbia un file .bmp devi prima esaminarne l'header per determinarne formato (palette o rgb), orientamento e dimensioni.
Una volta fatto, si tratta di indicizzare il bitmap in memoria
tipo:
inizio + dimensione header + larghezza * y + x
Esiste comunque una buona sezione all'interno dell'help di VC++ che contiene esempi utili in tal senso.
inizio + dimensione header + larghezza * y + xPer i .bmp in modo specifico, ci sono dei particolari da tenere in considerazione:
- Se ha la palette può essere compresso RLE.
- Tipicamente un .bmp è bottom-up cioè i primi dati della bitmap sono quelli delle linee in basso!
- Se non è compresso RLE ogni scan-line è lunga un multiplo di 32 bit (DWORD).
fenomeno83
21-12-2005, 18:12
niente da fare,nn c riesco!ma è possibile ke nn esistono funzioni ke estraggono i vaòlori dei pixel di 1 immagine(o i bits di 1 immagine,è uguale!!).lavoro in mfc!!!oppure qualke soluzione alternativa.
fenomeno83
21-12-2005, 19:17
mi sa ke mi tocca studiarmi la struttura del bmp(x vedere come sn header e cose varie) e leggere in binario il file
Hai detto che usi MFC. Mi sembra (pur non avendole mai usate) che tra le tante classi ci sia una CImage o qualcosa del genere. Non ti va bene?
The3DProgrammer
22-12-2005, 09:50
la classe è CBitmap.
con CBitmap si può fare, ma il sistema nn è molto flessibile per alcuni motivi:
1) bisogna conoscere a priori la dimensione della bitmap
2) Il numero di bpp della bitmap dipende dal numero di colori corrente impostato.
fenomeno83
22-12-2005, 12:06
ho fatto tutto usando semplicemente 1 lettura binaria e dopo essermi studiato il bmp!funge tutto alla xfezione ed oltretutto è velocissimo
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.