13-10-2011, 10:32
|
|
|
חבר מתאריך: 20.09.11
הודעות: 11
|
|
הפעלת מצלמה C160 Logitech
שלום,
אני משתמש בספריות ה OpenCV על מנת להפעיל את מצלמת ה Logitech C160.
התהליך הוא פשוט מאוד. אני יוצר מבנה בשם cvCapture שיודע לחפש ולקלוט לתוכו מצלמה ואת המאפיינים שלה. ואז אני משתמש ב cvQuaryFrame אשר יודע להחזיר מצביע לסוג IplImage. לאחר מכן אני מבצע מעט עיבוד על התמונה.
כאשר אני קולט את המצלמה למבנה cvCapture היא עובדת תמיד והפונקציה cvQuaryFrame לוקחת את התמונה העדכנית.
הבעיה היא שהמצלמה כנראה מחזיקה תור באורך של 5 תמונות. כלומר, כאשר אני מבקש את התמונה הוא נותן לי את התמונה הישנה ביותר מה5 שהוא תפס לאחרונה, כלומר התמונה בראש התור.
פתרתי את זה ב 2 דרכים:
1) בכל פעם שרציתי לתפוס תמונה הקצתי cvCapture, תפסתי תמונה ואז שיחררתי את ההקצאה ככה שבכל פעם שאני מבקש תמונה התור ריק כי הוא רק נוצר.
2) אני מבקש 5 פעמים את התמונה ככה שאני מעביר את התמונה שהכניסו לתור, לראש התור.
אני מעדיף את הדרך השנייה אבל אני לא חושב ששתיהן טובות ופוגעות מאוד באיכות הקוד. האם מישהו מכיר או נתקל בבעיה כזו מקודם? האם יש מעין מצביע או פונקציה ב OpenCV שמשאפשרת לי לקחת את התמונה שנמצאת בתחילת התור ולא בראש התור?
תודה.
|