Newsgroup: it.comp.lang.visual-basic
Titolo: Dimensioni immagine da webcam WIA

Ho un webcam Microsoft da 2 MPixel che collego tramite WIA
Con il programma in dotazione si possono scattare fotografie di varie 
dimensioni, anche superiori a 1024x768.
Dim dev As Device
 Dim imagefile As WIACtl.imagefile
 Dim item As item
 Set item = dev.ExecuteCommand(CommandID.wiaCommandTakePicture)
 Set imagefile = item.Transfer("{D2923B86-15F1-46FF-A19A-DE825F919576}")
 imagefile.SaveFile (NomeFileTemp)
Purtroppo non riesco a impostare le dimensioni dell'immagine che mi risulta 
sempre essere uno stiriminzito 352x288.
Le proprieta Height e Width dell'oggetto imagefile sono di sola lettura e 
non so quindi dove agire per arrivare, ad esempio, a 1024x768.
Qualcuno ha gią avuto un problema simile al mio e l'ha risolto ?
Grazie per l'attenzione.
AlpVir


Non vorrei sbagliarmi,
ma secondo me dovresti spostare la tua attenzione sull'oggetto Device.
Prima imposti la risoluzione e solo in un secondo momento catturi
l'immagine.
Prova quindi a cercare le proprietą che ti servono sull'oggetto Device.
Non sņ se sono stato chiaro.
--
Ciao Fede
By Chicco Production
http://bcp.freetools.it


Chiarissimo. Purtroppo, consultando l'help di "Wia Automation", in nessuno
degli oggetti che hanno in qualche modo a che fare con l'oggetto Device (e
sono ben 8) c'č la proprietą che ci si aspetterebbe e cioč Height e Width.
Anzi la gran parte delle proprietą sono a sola lettura.
Restano da esplorare cosucce del tipo di "ARGB Bitmap Data" e "Vector", per 
ora misteriorissime.
Altri suggerimenti ?
Grazie e ciao
AlpVir

 ora misteriorissime.
Prova a vedere se trovi la proprietà:
SetXResolution
SetYResolution
Se c'è assegnagli un valore di 300 e vedi che succede.
Il valore che inserisci si riferisce ai punti per pollice.
Per quanto riguarda ARGBData si usa in questo modo:
Dim img As ImageFile
Private Sub UpdatePicture()
    If Not img Is Nothing Then
        Dim w, h As Integer
        w = img.Width
        h = img.Height
        Set Picture1.Picture = img.ARGBData.Picture(w, h)
    End If
End Sub
Per quanto riguarda Vector si usa in questo modo:
Dim img As ImageFile
Private Sub Thumb
    Dim v As Vector
    On Error Resume Next
    Set v = img.Properties("ThumbnailData").Value
    If Err.Number <> 0 Then Exit Sub
    Set img = v.ImageFile
End Sub



Non esiste nulla del genere, se non una proprietà VerticalResolution e la 
corrispondente HorizontalResolution anch'esse a sola lettura.
Esiste un Thumbnail Width e Height ma fa riferimento alle creazione di 
immagini ridotte.
Esistono dei filtri ma essi si utilizzano DOPO che l'immagine è stata 
catturata, com'è logico.
Ho cercato in ogni modo nei newsgroup, in Google ed in Yahoo, in Microsoft, 
ecc.
Ho anche cercato con F2 (Visualizzatore oggetti di VB6), ho cercato su 
http://www.google.com/codesearch
 e anche sotto il tappetino del mouse ;-)
Eppure in qualche modo DEVE esserci la possibilità di acquisire immagini di 
diversa ampiezza (ovviamente nei limiti imposti dall'hardware).
Diciamo che ci ho dedicato almeno 4 ore e non sono proprio un pivello: 
risultato nullo !
Ciao
AlpVir

 AlpVir
Non ho presente il prodotto che hai comprato,
postami esattamente marca e modello.
Prova anche a controllare se puoi impostare la risoluzione con un menu
direttamente dalla WebCam (tipo fotocamera digitale).


 dimensioni, anche superiori a 1024x768.
mi sembra evidente che il programmillo:
 non usa Wia e sfrutta direttamente la webcam...o il suo driver(sicuro
che non abbia installato nulla?!

 diversa ampiezza (ovviamente nei limiti imposti dall'hardware).
Ho usato WIA una sola volta cinque anni fa, quindi prendi con
le  pinze quello che dico, ma mi pare ci fosse una maniera di
far uscire una dialog per l'impostazione del device...
Hai provato a frugare nei sample compresi in WIAAutSDK.zip ?
Bye, G. 


Ho cercato nei due semplici e scarni esempi in VB6 che sono in 
WIAAutSDK.zip, Ho cercato anche (non si sa mai) negli altri 7 esempi in 4 
linguaggi di scripting diversi (ASP, HTML, VBS, WSF) che ci sono in un'altra 
cartella.
L'eventuale presenza di una dialog in cui si potesse scegliere la 
risoluzione, che comunque non saprei come fare uscire (posto che esista), 
pregiudicherebbe il funzionamento del mio programma (che deve essere del 
tutto esente da interventi umani, per lo meno nella fase di acquisizione).
C'è in effetti un modo per fare apparire una dialog (Set Picture1.Picture = 
CommonDialog1.ShowAcquireImage.FileData.Picture) in cui viene utilizzata una 
Common Dialog simile come aspetto grafico (nella casella degli strumenti) a 
quella consueta (e che fa riferimento a COMMDLG32.OCX) ma che qui si 
appoggia a wiaaut.dll.
Ciao
AlpVir 

 che non abbia installato nulla?!
Ho installato il programma LifeCam ed i suoi driver. Ho cioč lanciato la 
procedura di installazione presente sul CD a corredo della Webcam. Mi sembra 
che sia una cosa normale e che non pregiudichi fino a questo punto il 
funzionamento della webcam.
Mi sono viceversa rifiutato di intallare Windows Messenger.
Aggiungo che sul computer č presente una WebCam Locitech Traveller e tramite 
una opportuna ListBox poso scegliere la webcam desiderata. Ma anche questo 
dato non credo che influisca sul problema di cui discutiamo, vero ?
Ciao e grazie
AlpVir 


Si tratta della Microsoft LifeCam NX-6000 che viene venduta come webcam da 
2Mpixel e riesce a creare, con il programma in dotazione,  immagini fino a 
3200x2400 (ma ho il sospetto che queste siano immagini artificalmente 
interpolate visto che sono di circa 1.5 MB).  Quelle a 800x600 pixel sono 
viceversa di buona qualità.
Tramite il programma a corredo (LifeCam) si può cambiare la risoluzione da 
160x120 a 1024x768 con in più 2 ulteriori modalità,  1.2 MP e 2.0 MP. I 
cambiamenti effettuati all'interno di FileCam sono memorizzati e al 
successivo lancio sono preservati, ma - e qui casca l'asino - accedendo dal 
mio programma la risoluzione è sempre e solo 352x288 pixel.
Ciao
AlpVir

 mio programma la risoluzione è sempre e solo 352 x 288 pixel.
Questo perchè il programma che ti hanno dato in dotazione, memorizza su file
o su registro
l'impostazione da te selezionata, riproponendotela al successivo riavvio.
Cioè reimpostando in un qualche modo il device, che altrimenti di default è
settato su 352 x 288.
1.2 MP = 1280 x 960 (1.228.800)
2.0 MP = 1600 x 1200 (1.920.000)



Questo l'avevo capito. Stasera provo a guardare nel registro e qui cerco di 
individuare dove LifeCam registra la risoluzione (ed eventualmente dove 
"lavora" il WIA). Cerco quindi di modificare direttamente dal registro la 
risoluzione e vedo come il mio programma reagisce. E' un trucco sporco, ma 
se funziona ....
Ciao
AlpVir