2015-12-18 7 views
5

मैं बिना किसी किस्मत के पाइथन के साथ ओपनसीवी स्टिचर क्लास का उपयोग करने की कोशिश कर रहा हूं। मेरा कोड है:पायथन के साथ ओपनसीवी स्टिचर क्लास का उपयोग कैसे करें?

import cv2 
stitcher = cv2.createStitcher(False) 
foo = cv2.imread("foo.png") 
bar = cv2.imread("bar.png") 
result = stitcher.stitch((foo,bar)) 

मुझे (1, कोई नहीं) के साथ एक tuple मिलता है।

सी ++ उदाहरण के बाद, मैंने बिना किसी किस्मत के सिलाई() को दूसरे तर्क के रूप में एक numpy सरणी पारित करने का प्रयास किया।

+0

यह एक बहुत ही रोचक समस्या है। मुझे इस फ़ंक्शन के लिए कोई पायथन दस्तावेज़ नहीं मिला है, हालांकि यह वहां है। – tfv

उत्तर

8

आप इसे सही उपयोग कर रहे हैं, प्रक्रिया किसी कारण से विफल हो गई है।

परिणाम ट्यूपल का पहला मान एक त्रुटि कोड है, जिसमें 0 सफलता का संकेत देता है। यहां आपको stitching.hpp के अनुसार, 1, जिसका मतलब है, प्रक्रिया को और छवियों की आवश्यकता है।

enum Status 
{ 
    OK = 0, 
    ERR_NEED_MORE_IMGS = 1, 
    ERR_HOMOGRAPHY_EST_FAIL = 2, 
    ERR_CAMERA_PARAMS_ADJUST_FAIL = 3 
}; 

ERR_NEED_MORE_IMGS आमतौर पर इंगित करता है कि आप अपने चित्रों में पर्याप्त keypoints जरूरत नहीं है।

यदि आपको त्रुटि क्यों होती है, तो आपको अधिक जानकारी चाहिए, तो आप सी ++ पर स्विच कर सकते हैं और विवरण में प्रक्रिया को डीबग कर सकते हैं।


संपादित करें: उपलब्ध कराने के काम कर रहे उदाहरण

ओ पी के रूप में एक ही कोड, हाल ही में जोड़े परिणाम बचाने के लिए और पूर्ण पथ।

import cv2 

stitcher = cv2.createStitcher(False) 
foo = cv2.imread("D:/foo.png") 
bar = cv2.imread("D:/bar.png") 
result = stitcher.stitch((foo,bar)) 

cv2.imwrite("D:/result.jpg", result[1]) 
इन छवियों के साथ

: (मुझे आशा है कि आप पांडा प्यार)

foo.png

foo.png

bar.png

bar.png

result.jpg

result.jpg

+0

ग्वेन, उस समस्या में रुचि लेने के लिए धन्यवाद। हम एक पायथन समाधान चाहते हैं, क्या आप पाइथन में एक उदाहरण दे सकते हैं जो आप प्रदान करते हैं? – tfv

+0

अभी तक मेरे लिए काम नहीं करता है, ऊपर दिए गए अलग उत्तर के साथ मेरी समस्याओं का प्रदर्शन किया है। क्या आप मदद कर सकते हैं? – tfv

+0

मैं आपके उत्तर पर टिप्पणी नहीं कर सकता (पर्याप्त प्रतिष्ठा नहीं ...)। ओपनसीवी 3.0+ में एक बग है। यह काफी अस्पष्ट है लेकिन ओपनसीएल एकीकरण से जुड़ा हुआ प्रतीत होता है (उदाहरण के लिए [यह बग रिपोर्ट] देखें (https://github.com/Itseez/opencv/issues/5667)। आपको OpenCL समर्थन के बिना OpenCV को पुनर्निर्माण करने की आवश्यकता है, और शायद 'cv2.cpp' ('// CV_Error (त्रुटि :: StsAssert," डेटा को सामान्य रूप से नल होना चाहिए!); 0) – Gwen

संबंधित मुद्दे