पर आरजीबी छवियों का प्रदर्शन स्ट्रीम मैं एक ऐसा एप्लीकेशन विकसित कर रहा हूं जो कैमरा डिवाइस से छवियां प्राप्त करे और उन्हें जीटीके विंडो में प्रदर्शित करे।सी, जीटीके: <60 एफपीएस
कैमरा एक अलग फ्रेम दर (1-50 एफपीएस) पर कच्चे आरजीबी छवियों (3 बाइट प्रति पिक्सेल, कोई अल्फा चैनल, निश्चित आकार) प्रदान करता है।
मैंने पहले से ही सभी हार्डवेयर सामान किए हैं और अब एक कॉलबैक फ़ंक्शन है जिसे कैमरे द्वारा कैप्चर की गई हर नई छवि के साथ बुलाया जाता है।
मेरी खिड़की में उन छवियों को प्रदर्शित करने का सबसे आसान लेकिन तेज़ तरीका क्या है?
यहाँ मैं पहले से ही करने की कोशिश की है:
का उपयोग कर
gdk_draw_rgb_image()
एक जीटीके ड्राइंग क्षेत्र पर: मूल रूप से काम किया, लेकिन इतनी धीमी गति से कि ड्राइंग प्रक्रियाओं ओवरलैप और आवेदन पहले कुछ तख्ते के बाद दुर्घटनाग्रस्त हो गाया, यहां तक कि 1 एफपीएस कैप्चर दर पर भी।प्रत्येक नया फ्रेम के लिए एक GdkPixbuf आवंटन और एक जीटीके छवि विजेट पर
gtk_image_set_from_pixbuf()
बुला: केवल पहली फ्रेम प्रदर्शित करता है, तो मैं खिड़की में कोई परिवर्तन नहीं देखते हैं। मेरे कोड में एक बग हो सकता है, लेकिन यह नहीं पता कि वह पर्याप्त तेज़ होगा या नहीं।काहिरा (
cairo_set_source_surface()
, तोcairo_paint()
) का उपयोग कर: बहुत तेजी से लग रहा था, लेकिन छवि धारीदार लग रहा था, अगर छवि प्रारूप संगत है पता नहीं है।
वर्तमान में मैं gstreamer की तरह कुछ की कोशिश कर रहा है और एक वीडियो स्ट्रीम की तरह उन छवियों के इलाज के बारे में सोच रहा हूँ, लेकिन मुझे यकीन है कि क्या यह मेरे सरल तंत्र के लिए एक overkill की तरह है नहीं कर रहा हूँ।
किसी भी सलाह के लिए अग्रिम धन्यवाद!
काहिरा 32 बिट शब्दों के संदर्भ में अपने CAIRO_FORMAT_RGB24 छवि सतह पिक्सल को परिभाषित करता है, इसलिए छोटी एंडियन मशीन पर स्मृति में, पिक्सेल बीजीआर 0 बीजीआर 0 होगा, आप शायद रिवर्स का उपयोग कर रहे हैं, या 0 बाइट में नहीं डाल रहे हैं, इसलिए अलग करना। – ergosys
@lynix मुझे एक ही चीज़ को कोड करने की आवश्यकता है। क्या आप वेबकैम फ़ीड प्राप्त करने के लिए कैरो को कैसे साझा कर सकते हैं? – inckka
@inckka: तब से यह 4 साल हो गया है, और किसी के लिए आपको एक सटीक उत्तर देने के लिए आपका प्रश्न बहुत सामान्य है। मेरी विशिष्ट समस्या हल हो गई है [इस तरह] (http://pastebin.com/QMCgaaUT)। – lynix