c++ - OpenCV element-wise matrix multiplication -
ओपनसीवी कहते हैं एमुल (बी) प्रति-तत्व गुणा है फिर भी निम्न कोड निम्न आउटपुट का उत्पादन करता है, और फिर यह त्रुटि देता है:
OpenCV त्रुटि: इनपुट आर्गुमेंट्स के आकार मेल नहीं खाते ।
कॉट & lt; & lt; लैपलासीयन_पीरामिड [आई] [न्यूज़लेव्स - 1 - एल] .रोस & lt; & lt; endl; Cout & lt; & lt; गाऊसी_वेट_पीरामिड [आई] [एल] .रोव & lt; & lt; endl; Cout & lt; & lt; लैपलासीयन_पीरामिड [आई] [न्यूक्लीव्स - 1 - एल]। Cols & lt; & lt; endl; Cout & lt; & lt; गाऊसी_वेट_पीरामिड [आई] [एल]। Cols & lt; & lt; endl; देता है:
339 339 571 571 तब:
मैट प्रोड = गाउसियन_वेट_पीरामिड [आई] [एल] .मूल (लैपलासीयन_पीरामिड [आई] [न्यूक्लीव्स - 1 - एल]); त्रुटि देता है मैंने कोशिश की Mat :: multiply एक समान प्रभाव के लिए।
मैं सुझाऊंगा एकल चैनल को तीन चैनल में कनवर्ट करना:
चटाई A = चटाई :: शून्य (100, 200, CV_32FC1); चटाई बी = चटाई :: शून्य (100, 200, सीवी_32 एफ 3); // Mat सी = एमुल (बी); // इनपुट आर्ग्यूज के आकार Mat Afc3 से मेल नहीं खाते; Mat टी [] = {ए, ए, ए}; मर्ज (टी, 3, एफ़सी 3); चटाई सी = एफ़सी 3.मूल (बी); // अब एएफसी 3 में 3 चैनल उत्तर हैं, यह 32_एफसी 3 का प्रकार है। हम बी में प्रत्येक एएमएम को ए से एक ही कॉफ़ द्वारा गुणा कर सकते हैं लेकिन अगर बी यह सीवी_ 8 यूसी 3 प्रकार है, तो यह काम नहीं करता क्योंकि ओपनसीवी मैट को गुणा करने की अनुमति नहीं देता है जिसमें विभिन्न प्रकार के पिक्सेल होते हैं उस स्थिति में, प्रत्येक पिक्सेल को 1 / 255.0 में स्केल करने के लिए 8UC3 को 32 एफ 3 रीमेन्टिंग परिवर्तित करें 32 एफसी 3 में प्रत्येक पिक्सेल में 0.0 और 1.0 के बीच का मान है (और निश्चित तौर पर 8UC3 में प्रत्येक पिक्सेल में 0 और 255 के बीच के मान हैं)। <पूर्व> चटाई A = चटाई :: शून्य (100, 200, CV_32FC1); Mat B = Mat :: शून्य (100, 200, CV_8UC3); // Mat सी = एमुल (बी); मैट एफ़सी 3, बीएफसी 3; Mat टी [] = {ए, ए, ए}; मर्ज (टी, 3, एफ़सी 3); बी कन्वर्टटे (बीएफसी 3, सीवी_32 एफसी 3, 1 / 255.0); चटाई सी = एफ़सी 3.मूल (बीएफसी 3);
Comments
Post a Comment