2012-11-06 20 views
5

मैं लगभग वहाँ हूँ OpenCV के लिए, लेकिन मैं काफी कैसेअहस्ताक्षरित चार ** चटाई

unsigned char ** to a cv::Mat 

कन्वर्ट करने के लिए मुझे पता है कि एक सीवी की .data हिस्सा :: चटाई uchar *

है समझ में नहीं आता

मैं के रूप में एक समारोह है कि रिटर्न और छवि का उपयोग कर रहा ...

unsigned char ** output; 

लेकिन मेरे कोड के बाकी सीवी :: चटाई का उपयोग करता है। मेरे पास lib का स्रोत नहीं है जिसका मैं उपयोग कर रहा हूं इसलिए वास्तव में यह नहीं पता कि यह क्या कर रहा है।

संपादित मदद लोगों के लिए धन्यवाद, मैं इस किया है ...

cv::Mat TempMat = cv::Mat(h, w, CV_8UC1, *output); 
imshow("this is a test",TempMat); 

लेकिन छवि काला तो मैं अब वहाँ वास्तव में कुछ भी है, अगर वहाँ है या नहीं यह पता लगाने की जरूरत है।

शोध की कमी के लिए खेद है कि मैं एक कड़े समय सीमा पर हूं, नहीं, यह होमवर्क नहीं है, प्रोफेसर को परिणाम दिखाने के लिए कुछ तैयार करने की कोशिश कर रहा है!

+2

आप चौड़ाई और डबल सूचक आप लौट रहे हैं की ऊंचाई को जानते हो? – sgarizvi

उत्तर

8

आप डेटा के लिए सूचक के साथ Mat constructor उपयोग करने के लिए:

// constructor for matrix headers pointing to user-allocated data 
    Mat(int _rows, int _cols, int _type, void* _data, size_t _step=AUTO_STEP); 
    Mat(Size _size, int _type, void* _data, size_t _step=AUTO_STEP); 

आप void**void* करने के लिए और इस के लिए इसका इस्तेमाल करने के बाद कन्वर्ट करना होगा।

+0

धन्यवाद, मुझे ऐसा करने में जाना पड़ा है। अगली समस्या – Oliver9523

+1

@ Oliver9523 के लिए संपादन देखें इनपुट डेटा का प्रारूप क्या है ('शून्य **')? यदि यह छवि डेटा की द्वि-आयामी सरणी के लिए एक सूचक है, तो इसे इसे एक-आयामी में परिवर्तित करना चाहिए। – ArtemStorozhuk

+0

मुझे लगता है कि यह एक 2 डी सरणी है, धन्यवाद। मैं इसे बदलने पर एक नज़र डालेंगे। – Oliver9523

0

हो सकता है आप सिर्फ इस तरह

cv::Mat TempMat = cv::Mat(h, w, CV_8UC1, *output); 

पर * निकाल देना चाहिए यह:

cv::Mat TempMat = cv::Mat(h, w, CV_8UC1, output);