2011-03-26 32 views
5

कैमरा पूर्वावलोकन के लिए, हम कैमरा वर्कफ़्लो द्वारा पूर्वावलोकन डेटा प्रदर्शित करने के लिए एक सतही दृश्य सेट कर सकते हैं। लेकिन मैं पहले पूर्वावलोकन डेटा को बढ़ाना चाहता हूं (जैसे कि एज मैप निकालने), फिर बढ़ाए गए पूर्वावलोकन डेटा को sufaceView पर प्रदर्शित करें (जैसे केवल किनारे का नक्शा प्रदर्शित करें)।कैमरा पूर्वावलोकन को कैसे बढ़ाया जाए?

मुझे यह कैसे करना चाहिए?

उत्तर

4

आपको सतह पर भेजे गए फ्रेम को रोकने और स्वचालित रूप से प्रदर्शित होने की आवश्यकता होगी। मैंने इस सवाल से पूछा और यह जवाब मिला, https://stackoverflow.com/a/4363417/514531, मूल रूप से आपको mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); की बजाय डिफ़ॉल्ट सेटिंग में SurfaceView के प्रकार को बदलना होगा, इसलिए बस इस पंक्ति को छोड़ दें। दूसरा, आप पूर्वावलोकन को किसी भी डिस्प्ले पर सेट नहीं करना चाहते हैं, इसलिए जब आप कैमरे को सेट कर रहे हैं तो लाइन Camera.setPreviewDisplay(mHolder); // mHolder is your holder to the SurfaceView मुझे लगता है कि आपके पास कैमरा कॉलबैक सेट अप है, यह आपकी कक्षा को Camera.PreviewCallback लागू करने के द्वारा हासिल किया जाता है, इसमें शामिल होगा एक onPreviewFrame() विधि जहां कच्चे फ्रेम प्राप्त होते हैं। आपको इन फ्रेम को बिटमैप्स में संसाधित करने की आवश्यकता होगी और यह https://stackoverflow.com/a/4367250/514531 में समझाया गया है। एक बार ऐसा करने के बाद आप छवि पर कोई छवि प्रसंस्करण कर सकते हैं। जब आप SurfaceView पर छवियां प्रदर्शित करना चाहते हैं तो आप Bitmaps को SurfaceView पर कैनवास पर चित्रित करके मैन्युअल रूप से ऐसा कर सकते हैं। आप पहले कैनवास ऑब्जेक्ट बनाते हैं और इसे Canvas mCanvas = mHolder.lockCanvas() का उपयोग करके SurfaceView से संलग्न करते हैं, अब आप स्क्रीन पर अपने बिटमैप को प्रदर्शित करने के लिए कैनवास क्लास के विभिन्न ड्रा विधियों का उपयोग कर सकते हैं। छवि को प्रदर्शित करने के लिए, ड्रा विधियों को mHolder.unlockCanvas() पर कॉल करने के बाद। मुझे आशा है कि यह वही है जो आप बाद में थे।

संबंधित मुद्दे