2011-06-03 14 views
5

मैं अजगर-ओपनसीवी का उपयोग कर रहा हूं। सोबेल बढ़त का पता लगाने का उपयोग करते समय मैं निम्नलिखित धारणा त्रुटि मिलती है:ओपनसीवी: सोबेल एज डिटेक्शन मुझे assertion त्रुटि देता है

src.size() == dst.size() && src.channels() == dst.channels() && ((src.depth() == CV_8U && (dst.depth() == CV_16S || dst.depth() == CV_32F)) || (src.depth() == CV_32F && dst.depth() == CV_32F)) 

मैं CreateImage() का उपयोग कर dest बना सकते हैं और यह एक ही आकार और src के रूप में चैनल है। Src और dest दोनों की गहराई आईपीएल_DEPTH_8U है। मैंने LoadImageM() का उपयोग करके छवि लोड करने का भी प्रयास किया ताकि स्थिरांक CV_* की तरह हों लेकिन इससे मदद नहीं मिली।

मुझे यह भी पता लगाना है कि IPL_DEPTH_8U == CV_8Ufalse है।

+0

हाँ, मुझे इस त्रुटि का सामना करना पड़ा है। मुझे ओपनसीवी पसंद है, लेकिन मुझे उनके त्रुटि संदेशों से नफरत है। यह विशेष रूप से नौसिखियों के लिए अविश्वसनीय रूप से अनुपयोगी है, लेकिन मूल रूप से इसका मतलब है कि आपके स्रोत और गंतव्य छवियों में एक ही प्रारूप नहीं है (जैसे विभिन्न पिक्सेल आयाम या चैनलों की अलग-अलग संख्या)। – Cerin

उत्तर

5

मैं openCV लिए novices के समाधान थोड़ी सूझबूझ से काम मिल गया:

src = cv.LoadImageM('src.png', cv.CV_LOAD_IMAGE_GRAYSCALE) 
dest = cv.CreateMat(src.height, src.width, cv.CV_16S) 
cv.Sobel(src, dest, 1, 1) 

नोट करना महत्वपूर्ण बात यह है कि संचालन के लिए आवश्यक छवि प्रारूप स्पष्ट रूप से API संदर्भ में दस्तावेज नहीं कर रहे हैं और एक बहुत सावधान ध्यान देना चाहिए उत्पन्न त्रुटियों के लिए।

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