क्या ओपनसीवी cv::Mat
ऑब्जेक्ट को Eigen::Matrix
में परिवर्तित करने का एक उलट तरीका है?ओपनसीवी सीवी :: मैट और ईजिन :: मैट्रिक्स
उदाहरण के लिए, कर के कुछ तरीका:
cv::Mat cvMat;
Eigen::Matrix eigMat;
camera->retrieve(cvMat);
// magic to convert cvMat to eigMat
// work on eigMat
// convert eigMat back to cvMat
imshow("Image", cvMat);
मैं cv2eigen
और eigen2cv
, लेकिन जिसके परिणामस्वरूप cvMat
का उपयोग कर की कोशिश की है पूरी तरह से घायल है और मैं वास्तव में यकीन है कि क्यों नहीं कर रहा हूँ। आयाम सही हैं, लेकिन ग्राफिक्स पूरी तरह से ट्रैश किए गए हैं, इसलिए संभवतः एक बाइट-प्रति-पिक्सेल या डेटासाइज़ समस्या?
बिल्कुल सही, यह वही है जो मैं ढूंढ रहा था। बहु-चैनल छवि (आरजीबी, वाईयूवी, या चैनलों के किसी भी अन्य संयोजन) का उपयोग करते समय, आप इसे सर्वश्रेष्ठ रूप से कैसे परिवर्तित करेंगे? प्रति चैनल एक अलग मैट्रिक्स? WidthXheightXchannels के 3 डी मैट्रिक्स में? या बस चौड़ाई (चौड़ाई * 3) * ऊंचाई से इसे विस्तारित करें? – Yeraze
Mulit-channel छवियों को आम तौर पर इंटरलीव किए गए सरणी (जैसे RGBRGBRGB ...) के रूप में संग्रहीत किया जाता है।आप उनके साथ क्या करना चाहते हैं, इस पर निर्भर करते हुए आप प्रत्येक चैनल को एक अलग ईजेन :: मैप को स्ट्रैड पैरामीटर का शोषण करने पर विचार कर सकते हैं: 'सीवी :: मैट सीवीटी (4,4, सीवी_32 एफसी 3); // एक 3 चैनल फ्लोट मैट्रिक्स Eigen :: मानचित्र> लाल (cvT.data); ईजिन :: मानचित्र > हरा (cvT.data +1); Eigen :: मानचित्र > नीला (cvT.data +2); ' –
Pierluigi
cvT.data() का उपयोग करना मेरे लिए काम नहीं करता है, एक कंपाइलर त्रुटि देता है। मैंने जवाब दिया कि मैं इसे नीचे कैसे करता हूं, जिसमें सूचनाएं मनमाने ढंग से आकार के मैट्रिस के लिए और ईजिन से ओपनसीवी के विपरीत रूपांतरण के साथ कैसे करें। – Ela782