Video Input for Windows
Posted: Sun Nov 19, 2006 11:59 pm
Μετά από αρκετό ψάξιμο και ξενύχτια
, με υπερηφάνεια σας παρουσιάζω το VideoDLL.dll το οποίο επιτρέπει να παίρνετε εικόνες από οποιαδήποτε πηγή (DV camera , WebCam , TV Tuner) και να τις επεξεργάζεστε σαν array από Pixels. Είπα να το postάρω εδώ μήπως και κάποιος έχει σκεφτεί να ασχοληθεί με Image Capturing και είχε χαθεί (όπως και εγώ στα tutorials του DirectX και τις ιδιοτροποίες του Visual Studio)
Δεν χρειάζεται καμμία γνώση σε σχέση με DirectX , Direct Show ενώ επειδή είναι dll η βιβλιοθήκη παίζει και από C++ με mingw και από FreePascal
και από όλες τις Windows ported γλώσσες..
Θέλει DirectX 8.1 και πάνω μάλλον..
Οι εντολές είναι οι εξής
InitCamera(); // Το καλείτε μια φορά και κάνει το initialization του DLL και του DirectShow , ανοίγοντας την πρώτη συσκευή Input που βρίσκει
SnapShot(); //Αποθηκεύει την εικόνα που βλέπει η συσκευή σε ένα αρχειάκι cap.bmp
Snap() //Αποθηκεύει την εικόνα που βλέπει η συσκευή στην μνήμη
GetVideoXY(int x,int y)// Επιστρέφει το χρώμα από το τελευταίο Snap που έχει το Pixel X,Y σε μορφή COLORREF (το οποίο ισοδυναμεί με integer)
CopyDC(HDC hDC)// Κάνει BitBlt σε κάποιο παράθυρο που πιθανόν να έχετε ανοιχτό
UnInitCamera(); // Το καλείτε όταν τελειώσατε οριστικά με την χρήση του DLL
Για να πάρετε RGB από το COLORREF κάντε include το windows.h
και οι εντολές είναι GetRValue(COLORREF clr); GetGValue(COLORREF clr);
GetBValue(COLORREF clr);
Θα το βελτιώσω γιατί προς το παρόν κάνει unload/load κάποια πράματα ανα Snap με αποτέλεσμα χρονική καθυστέρηση
Μαζί με το DLL έχω και 2 mini Projects το ένα βαράει σειρήνα όταν εντοπίσει κίνηση και το άλλο κάνει ένα Effect σαν αυτό στις ειδήσεις για τον καιρό.. Δλδ αφήνετε την camera να δεί έναν τοίχο για κάποια δευτερόλεπτα και μετά όταν μπείτε στην εικόνα αντί να φαίνεται ο τοίχος από πίσω σας φαίνεται μια εικόνα που έχετε βάλει στο background.bmp
Ανάλογα με τα παράσιτα που πιάνει η Webcam σας τα 2 Projects μπορεί να μην δουλεύουν τέλεια , απλά είναι 50 γραμμές κώδικας.. Δεν έχουν σοφιστικέ filtering..
LINK ΠΑΡΑΚΑΤΩ
ADDED 21/11/06
Μετά από διάφορα tweaks βελτιώθηκε πολύ η ταχύτητα input των εικόνων. Πλέον υπάρχει framerate!
Ορίστε το recompilation..
LINK ΠΑΡΑΚΑΤΩ
ADDED 21/11/06 - 16:24
Έβαλα και ένα καινούργιο Project που λέγεται Video Mouse και το οποίο επιτρέπει να ελέγχετε τον cursor δείχνοντας με το δάχτυλο σας
Click και Double Click δεν γίνεται αλλά θα μπορούσε να γίνεται με φωνή.. Να δείχνει κάποιος με το δάχτυλο και να λέει Άνοιξε
Επίσης σκέφτομαι να φτιάξω και κανένα mini game όπως αυτά του EyeToy για το Playstation ή όπως ένα 3d Scanner
πραγματικά οι εφαρμογές είναι άπειρες..
Click Here to Download


Δεν χρειάζεται καμμία γνώση σε σχέση με DirectX , Direct Show ενώ επειδή είναι dll η βιβλιοθήκη παίζει και από C++ με mingw και από FreePascal

Θέλει DirectX 8.1 και πάνω μάλλον..
Οι εντολές είναι οι εξής
InitCamera(); // Το καλείτε μια φορά και κάνει το initialization του DLL και του DirectShow , ανοίγοντας την πρώτη συσκευή Input που βρίσκει
SnapShot(); //Αποθηκεύει την εικόνα που βλέπει η συσκευή σε ένα αρχειάκι cap.bmp
Snap() //Αποθηκεύει την εικόνα που βλέπει η συσκευή στην μνήμη
GetVideoXY(int x,int y)// Επιστρέφει το χρώμα από το τελευταίο Snap που έχει το Pixel X,Y σε μορφή COLORREF (το οποίο ισοδυναμεί με integer)
CopyDC(HDC hDC)// Κάνει BitBlt σε κάποιο παράθυρο που πιθανόν να έχετε ανοιχτό
UnInitCamera(); // Το καλείτε όταν τελειώσατε οριστικά με την χρήση του DLL
Για να πάρετε RGB από το COLORREF κάντε include το windows.h
και οι εντολές είναι GetRValue(COLORREF clr); GetGValue(COLORREF clr);
GetBValue(COLORREF clr);
Θα το βελτιώσω γιατί προς το παρόν κάνει unload/load κάποια πράματα ανα Snap με αποτέλεσμα χρονική καθυστέρηση
Μαζί με το DLL έχω και 2 mini Projects το ένα βαράει σειρήνα όταν εντοπίσει κίνηση και το άλλο κάνει ένα Effect σαν αυτό στις ειδήσεις για τον καιρό.. Δλδ αφήνετε την camera να δεί έναν τοίχο για κάποια δευτερόλεπτα και μετά όταν μπείτε στην εικόνα αντί να φαίνεται ο τοίχος από πίσω σας φαίνεται μια εικόνα που έχετε βάλει στο background.bmp
Ανάλογα με τα παράσιτα που πιάνει η Webcam σας τα 2 Projects μπορεί να μην δουλεύουν τέλεια , απλά είναι 50 γραμμές κώδικας.. Δεν έχουν σοφιστικέ filtering..

LINK ΠΑΡΑΚΑΤΩ
ADDED 21/11/06
Μετά από διάφορα tweaks βελτιώθηκε πολύ η ταχύτητα input των εικόνων. Πλέον υπάρχει framerate!


Ορίστε το recompilation..
LINK ΠΑΡΑΚΑΤΩ
ADDED 21/11/06 - 16:24
Έβαλα και ένα καινούργιο Project που λέγεται Video Mouse και το οποίο επιτρέπει να ελέγχετε τον cursor δείχνοντας με το δάχτυλο σας

Click και Double Click δεν γίνεται αλλά θα μπορούσε να γίνεται με φωνή.. Να δείχνει κάποιος με το δάχτυλο και να λέει Άνοιξε

Επίσης σκέφτομαι να φτιάξω και κανένα mini game όπως αυτά του EyeToy για το Playstation ή όπως ένα 3d Scanner
πραγματικά οι εφαρμογές είναι άπειρες..
Click Here to Download