2012-06-13 14 views
5

में मैं सभी एक ही आयाम साथ Mat वस्तुओं में छवियों की एक जोड़ी है मैं एक bix cv::Mat वस्तु उन सबजुटना चटाई OpenCV

धारण करने के लिए बनाना चाहते हैं, तो नए मैट्रिक्स के आयाम है: widthNew = चौड़ाई मैट्रिस की पुरानी x संख्या, ऊंचाई अपरिवर्तित बनी हुई है।

मैंने पाया कि इस तरह के एक प्रति का उपयोग कर किया जा सकता है:

void cvCopy(const CvArr* src, CvArr* dst, const CvArr* mask=NULL) 

लेकिन फिर, कैसे मुखौटा तीन मैट्रिक्स के लिए तीन अलग-अलग समय में परिभाषित किया जा सकता है ?.

सादर, Moataz

+0

सावधान रहें कि IplImage के लिए अधिकतम आकार 4000 * 4000 के आसपास कहीं है। आपको अपनी इनपुट छवि – jlengrand

+0

मास्क वैकल्पिक के संकल्प को भी कम करना पड़ सकता है, आपको एक को परिभाषित करने की आवश्यकता नहीं है। –

+0

ठीक है। मैं इसे ध्यान में रखूंगा, thnx –

उत्तर

5

आप एक छवि है जो वास्तव में गंतव्य छवि का एक क्षेत्र है परिभाषित करने के लिए एक रॉय का उपयोग करें और फिर उस पर कॉपी। देख Copy an cv::Mat inside a ROI of another one

+0

Thnx। ठीक काम करता है –

1

आप शायद the source code of cvShowManyImages() को देखो, एक समारोह है कि इनपुट के रूप में कई छवियों लेता है और उन्हें एक भी 3 चैनल छवि में संयोजित प्रदर्शित करने के लिए है जो ले जाना चाहते हैं:

प्रयोग विधि करने के लिए है एकल बिग छवि के आरओआई सेट करें और उसके बाद का आकार बदलें और इनपुट छवियों को सिंगल बिग इमेज पर कॉपी करें।

यदि आप अपनी अन्य छवियों को पकड़ने के लिए पर्याप्त गंतव्य छवि बनाते हैं, तो आपको उन्हें आकार बदलने की आवश्यकता नहीं होगी।

आप को पता है IplImage < के बीच परिवर्तित करने के लिए कैसे चाहते हैं ->cv::Mat, this thread की जाँच करें।

+0

दिलचस्प लगता है, thnx। मुझे लगता है कि मैं आईपीआईमेज –

2

मुझे लगता है कि ऐसा करने का एक आसान तरीका है। ओपनसीवी में hconcat() और vconcat() नामक दस्तावेज नहीं हैं। पहला एक क्षैतिज समामेलन के लिए है और दूसरा लंबवत concatenation के लिए है।

आप उन्हें इस तरह से उपयोग कर सकते हैं:

Mat A, B; 
... //In this part you initialize the Mat A and Mat B. 

Mat H, V; //These are the destination matrices 
hconcat(A, B, H); 
vconcat(A, B, V); 

मुझे आशा है कि यह कर सकते हैं।

+0

के बजाय शुद्ध सीवी :: मैट का उपयोग करके कुछ समान लागू करने के लिए विचार की प्रतिलिपि बनाउंगा। गंतव्य स्रोतों में से एक जैसा हो सकता है ताकि 'vconcat (out, out1, out); vconcat (आउट, आउट 2, आउट); 'एक बहुप्रचारित संदर्भ में (मेरे व्यक्तिगत थ्रेड से आउटपुट के संयोजन के लिए) मेरे लिए अच्छा काम किया। – Izaan