मैं कस्टम कैमरा एपीआई 2 ऐप विकसित कर रहा हूं, और मुझे लगता है कि जब मैं ImageReader कॉलबैक का उपयोग करता हूं तो कैप्चर प्रारूप रूपांतरण कुछ डिवाइसों पर भिन्न होता है।मैं छवि रीडर कैमरा एपीआई 2 में एनवी 21 और वाईवी 12 कोडिफिकेशन के बीच अंतर कैसे कर सकता हूं?
उदाहरण के लिए नेक्सस 4 में ठीक काम नहीं करता है और नेक्सस 5 एक्स में ठीक दिखता है, यहां आउटपुट है।
मैं इस रूप में ImageReader प्रारंभ:
mImageReader = ImageReader.newInstance(320, 240, ImageFormat.YUV_420_888,2);
और मेरी कॉलबैक सरल कॉलबैक ImageReader कॉलबैक है।
mOnImageAvailableListener = new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
try {
mBackgroundHandler.post(
new ImageController(reader.acquireNextImage())
);
}
catch(Exception e)
{
//exception
}
}
};
और नेक्सस 4 के मामले में: मुझे यह त्रुटि थी।
D/qdgralloc: gralloc_lock_ycbcr: Invalid format passed: 0x32315659
जब मैं दोनों उपकरणों में कच्ची फ़ाइल लिखने का प्रयास करता हूं, तो मेरे पास ये अलग-अलग छवियां होती हैं। इसलिए मैं समझता हूं कि नेक्सस 5 एक्स छवि में एनवी 21 कोडिफिकेशन है और नेक्सस 4 में वाईवी 12 कोडिफिकेशन है।
मुझे image format का एक विनिर्देश मिला और मैं ImageReader में प्रारूप प्राप्त करने का प्रयास करता हूं। वाईवी 12 और एनवी 21 विकल्प हैं, लेकिन जाहिर है, जब मैं प्रारूप प्राप्त करने का प्रयास करता हूं तो मुझे YUV_420_888 प्रारूप मिलता है।
int test=mImageReader.getImageFormat();
तो वहाँ किसी भी तरह से कैमरा इनपुट प्रारूप (NV21 या YV12) कैमरा कक्षा में इस संहिताकरण प्रकार भेदभाव करने के लिए प्राप्त करने के लिए है? कैमरा लक्षण शायद?
अग्रिम धन्यवाद।
यूनई। पीडी: मैं प्रदर्शित आरजीबी छवियों के लिए ओपनजीएल का उपयोग करता हूं, और मैं वाईयूवी_420_888 में रूपांतरण करने के लिए ओपनसीवी का उपयोग करता हूं।
'Image.getFormat()' 'ImageReader' प्रारूप के समान देता है? और ऐसा लगता है कि आप अकेले नहीं हैं: http://stackoverflow.com/questions/34717969/imagereader-format-overridden-in-some-devices – nandsito
@nandsito आपकी सलाह के लिए धन्यवाद, लेकिन दुर्भाग्यवश वे दोनों मामलों में समान मूल्य 35 वापस कर देते हैं जो वास्तव में YUV_420_888 है। – uelordi
क्या आपने 'कैमरा' पैरामीटर की जांच की है .getSupportedPictureFormats() 'कौन से प्रारूप समर्थित हैं? – Robert