का उपयोग कर 12-बिट बेयर छवि को 8-बिट आरजीबी में कनवर्ट करें मैं 12-बिट बेयर छवि को 8-बिट आरजीबी छवि में बदलने के लिए ओपनसीवी 2.3.1 का उपयोग करने की कोशिश कर रहा हूं। इस तरह यह cvCvtColor फ़ंक्शन का उपयोग काफी सरल होना चाहिए लगता है, लेकिन समारोह एक अपवाद जब मैं इस कोड से कॉल करने की फेंकता है:ओपनसीवी
int cvType = CV_MAKETYPE(CV_16U, 1);
cv::Mat bayerSource(height, width, cvType, sourceBuffer);
cv::Mat rgbDest(height, width, CV_8UC3);
cvCvtColor(&bayerSource, &rgbDest, CV_BayerBG2RGB);
मैंने सोचा था कि मैं sourceBuffer के अंत अतीत चल रहा था, इनपुट डेटा के बाद से 12-बिट है, और मुझे 16-बिट प्रकार में गुजरना पड़ा क्योंकि ओपनसीवी में 12-बिट प्रकार नहीं है। तो मैंने चौड़ाई और ऊंचाई को 2 से विभाजित किया, लेकिन सीवीसीवीटीकॉलर ने अभी भी एक अपवाद फेंक दिया जिसमें इसमें कोई उपयोगी जानकारी नहीं थी (त्रुटि संदेश "अज्ञात अपवाद" था)।
कुछ महीने पहले पोस्ट किया गया similar question था जिसका उत्तर कभी नहीं दिया गया था, लेकिन चूंकि मेरा प्रश्न 12-बिट बेयर डेटा के साथ अधिक विशेष रूप से संबंधित है, मैंने सोचा कि यह एक नए प्रश्न की योग्यता के लिए पर्याप्त रूप से अलग था।
अग्रिम धन्यवाद।
संपादित: मैं, कुछ कमी किया जाना चाहिए, क्योंकि मैं भी 8 बिट डेटा पर काम करने के cvCvtColor समारोह नहीं मिल सकता है:
cv::Mat srcMat(100, 100, CV_8UC3);
const cv::Scalar val(255,0,0);
srcMat.setTo(val);
cv::Mat destMat(100, 100, CV_8UC3);
cvCvtColor(&srcMat, &destMat, CV_RGB2BGR);
तो यह पता चला है कि मैं * था * कुछ कमी:
संशोधित Gillfish के कोड (कैमरा संभालने 16bit बायर एन्कोडिंग में छवि देता है)। मेरे सहयोगी ने बताया कि मैं सी और सी ++ कॉल मिश्रण कर रहा था। सीवी :: सीवीटीकॉलर (srcMat, destMat, CV_RGB2BGR) पर अंतिम पंक्ति को बदलना; सबकुछ एक आकर्षण की तरह काम करता है। मैं अभी भी 16-बिट बेयर डेटा को 8-बिट आरजीबी डेटा में परिवर्तित करने की मूल समस्या पर काम कर रहा हूं, इसलिए यदि मुझे इसका उत्तर मिल जाए तो मैं एक अपडेट पोस्ट करूंगा। – Gillfish
'cvCvtColor' पुराने सी ओपनसीवी एपीआई से संबंधित है, लेकिन 'सीवी :: मैट' सी ++ एपीआई से एक वर्ग है। उन्हें मिलाकर एक अच्छा विचार नहीं है और आप एपीआई के केवल एक संस्करण का बेहतर उपयोग करेंगे। 'सीवी :: सीवीटीकॉलर (srcMat, dstMat, COLOR_RGB2BGR) 'आपके लिए काम करना चाहिए। –
"ग्रीन फ़िल्टर लुक" शायद इसका मतलब है कि आपने गलत बेयर पैटर्न निर्दिष्ट किया है। उन सभी को आजमाएं। – user3443369