2011-12-05 15 views
8

मैं छवि पहचान के लिए कैमरा पूर्वावलोकन का उपयोग करना चाहता हूं। मेरे उद्देश्यों के लिए, मुझे पूर्वावलोकन संकल्प की आवश्यकता जितनी अधिक हो सके (और साथ ही, उपयोगकर्ता को पूर्वावलोकन प्रदर्शित करें) की आवश्यकता है।720 पी एंड्रॉइड कैमरा पूर्वावलोकन डेटा कैसे प्राप्त करें?

मैं एक पूर्वावलोकन श्रेणी का निर्माण, SurfaceView का विस्तार और 1280x720 को PreviewSize निर्धारित किया है। लेकिन केवल पहले 497,664 बाइट डेटा होते हैं (मिलान -

camera = Camera.open(); 

parameters = camera.getParameters(); 
parameters.setPreviewSize(1280,720); 

camera.setParameters(parameters); 
byte[] b = new byte[camera.getParameters().getPreviewSize().width * 
    camera.getParameters().getPreviewSize().height * 
    ImageFormat.getBitsPerPixel(camera.getParameters().getPreviewFormat())/8]; 
camera.addCallbackBuffer(b); 
camera.setPreviewCallbackWithBuffer(new CameraPreviewCallback()); 

try { 
camera.setPreviewDisplay(this.getHolder()); 
camera.startPreview() 
} 

मेरे बाइट सरणी ख 1,382,400 बाइट है और मेरी CameraPreviewCallback.onPreviewFrame() फ़ंक्शन प्राप्त करता है उन 1,382,400 बाइट्स: मैं जीना छवि पाने के लिए एक PreviewCallBack जोड़ा 768x432 रिज़ॉल्यूशन (एचटीसी डिजायर))।

मैं 800x480 के प्रदर्शन संकल्प (एचटीसी डिजायर, एलजी ऑप्टिमस 3 डी, सैमसंग गैलेक्सी एस 2, सैमसंग गैलेक्सी टैब , ...) के साथ विभिन्न उपकरणों पर यह परीक्षण किया है, सब। मेरे कोड के लिए काम करने वाला एकमात्र डिवाइस एक एचटीसी डिजायर एचडी है।

किसी को भी कैसे एक बाइट सरणी के रूप में पूर्ण 720p संकल्प प्राप्त करने के लिए पता है? "कुछ" स्मार्टफोन डिस्प्ले फिट करने के लिए पूर्वावलोकन रिज़ॉल्यूशन को कम करने लगता है।

सादर

JOERN

+0

क्या आप वाकई 720p का समर्थन करते हैं? क्या लॉगकैट कुछ भी कहता है (जैसे "संकल्प सेट नहीं कर सकता")? – Lennart

+0

हाँ, 720p सभी उपकरणों पर पूर्वावलोकन आकार के रूप में समर्थित है। लॉगकैट कुछ खास नहीं कहता है - ऐसा लगता है कि "कुछ" पूर्वावलोकन संकल्प को चुपचाप कम कर देता है। –

+0

क्या GetPreviewSize() सही आकार देता है? – Lennart

उत्तर

8

आप एक कैमरा पूर्वावलोकन के लिए किसी भी यादृच्छिक संकल्प का उपयोग नहीं कर सकते हैं।

कुछ उपकरण केवल कुछ प्रस्तावों का समर्थन। आप इन्हें Camera.Parameters.getSupportedPreviewSizes() ¹ के माध्यम से पूछ सकते हैं। यदि आपकी डिवाइस इस सूची में 1280x720 वापस नहीं करती है, तो आप इसका उपयोग नहीं कर सकते हैं। एक समर्थित रिज़ॉल्यूशन का चयन करें जो इसके बजाय आपके वांछित व्यक्ति के करीब आता है।

¹ तुम बहुत सामान्य रूप में किसी भी संकल्प, 720p या नहीं

+2

(दुर्भाग्य से) 1280x720p प्रत्येक सूचीबद्ध डिवाइस की सूची में है। मैंने समर्थित पूर्वावलोकन दृश्यों की जांच की। –

2

का उपयोग कर हालांकि यह एक पुराने सवाल यह है कि पहले क्या करना चाहिए, इस सवाल का जवाब अपरिवर्तित है: प्रत्येक डिवाइस के लिए समर्थित पूर्वावलोकन आकारों की सूची सही नहीं है। डिफ़ॉल्ट पूर्वावलोकन आकार, मेरे ज्ञान के सर्वोत्तम, हमेशा मान्य है। अन्य आकार केस-दर-मामले आधार पर सबसे अधिक काम करने लगते हैं - आप उचित रूप से आश्वस्त हो सकते हैं कि एक डिफ़ॉल्ट पूर्वावलोकन आकार स्क्रीन पर गलत नहीं देखेगा, लेकिन यह सब कुछ है। विशेष रूप से, कि बाइट ऐरे बड़े छवि प्रारूपों को समायोजित करने के लिए स्केल नहीं करेगा, भले ही वे "समर्थित" हों, और केवल कुछ "समर्थित" पूर्वावलोकन आकारों को उचित रूप से ऑन-रेज़ोल्यूशन और हरे/गुलाबी विरूपण के बिना प्रस्तुत किया जाएगा।

केवल विश्वसनीय तरीका पता है कि संकल्प सही है और onPreviewFrame से डेटा() अच्छा है इस मैन्युअल रूप से परीक्षण करने के लिए है।

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