2015-04-13 5 views
5

तो मुझे एहसास है कि मैं ओपनसीवी के एक गैर-पूर्ण संस्करण से बहुत कुछ पूछ सकता हूं, लेकिन मुझे cvtColor विधि के साथ अजीब समस्याएं हैं I कहीं और लोगों के लिए कोई अन्य संदर्भ नहीं मिल रहा है। सबसे पहले, कुछ prefacing के रूप में, मैं PyQt4, QThreads, पायथन 2.7, और beaglebone काले पर opencv का उपयोग कर एक बहुप्रचारित gui आवेदन लिख रहा हूँ। मेरा वर्तमान स्रोत जिथब HERE पर पाया जा सकता है। मैं मूल रूप से ओपनसीवी के डेबियन रेपो संस्करण का उपयोग कर रहा था लेकिन यह इतनी पुरानी हो गई कि इसमें कुछ विशेषताओं की आवश्यकता नहीं थी, अर्थात् सरलब्लोबेटेक्टर वर्ग, और बेहद धीमी थी। इस बात को ध्यान में रखते हुए, मैंने नवीनतम ओपनसीवी 3.0.0 को स्क्रैच से संकलित किया और तब से यह अजीब अभिनय कर रहा है। मैं अंततः इसे cvtColor के साथ एक मुद्दे के लिए संकुचित कर दिया। इसके बाद मैंने यह सुनिश्चित करने के लिए न्यूनतम कोड पर इसे सरल बना दिया कि यह समस्या उत्पन्न करने वाला कुछ और नहीं था। मेरे पास यह है कि मैं परीक्षण के लिए उपयोग कर रहा हूं।पायथन 2.7 और ओपनसीवी 3.0.0 सीवीटी रंग बीजीआर/आरजीबी रूपांतरणों के लिए काम नहीं कर रहा है

import cv2 

img = cv2.imread('images/original_image.png', cv2.IMREAD_COLOR) 

rgb_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
bgr_img = cv2.cvtColor(rgb_img, cv2.COLOR_RGB2BGR) 

cv2.imwrite("images/after_convert_to_rgb.png", rgb_img) 
cv2.imwrite("images/after_convert_to_gray.png", gray_img) 
cv2.imwrite("images/after_convert_back_to_bgr.png", bgr_img) 

इस कोड की परिणामी छवियां HERE मिल सकती हैं।

कहने की जरूरत नहीं है, मैं इस बिंदु पर फंस गया हूं। मुझे यह विशेष रूप से अजीब लगता है कि भूरे रंग में रूपांतरण पूरी तरह से काम करता है जबकि अन्य दो बिल्कुल काम नहीं करते हैं। मेरे पास मेरे कुछ दोस्त हैं जो ओपनसीवी के साथ काम करते हैं, मेरा मूल कोड और यह टेस्ट कोड दोनों जांचें और इसमें कुछ भी गलत नहीं दिख रहा है। इसके अलावा, हालांकि इस परीक्षण कोड के हिस्से के रूप में, मैंने विभिन्न स्रोतों से विभिन्न फ़ाइल स्वरूपों और छवियों में पढ़ने का प्रयास किया। यह वही काम करता है जो वीडियोकैप्चर क्लास से प्राप्त ओपनसीवी फ्रेम में हेरफेर करता है, जहां मैंने पहली बार इस मुद्दे को देखा और मैं अंततः क्या करने की कोशिश कर रहा हूं।

तो क्या किसी ने ओपनसीवी 3.0 में पहले ऐसा कुछ देखा है? क्या मैं ओपनसीवी 2.4 संकलित करने और इसके बजाय इसका उपयोग करने के लिए बेहतर हूं? मैंने इसे पहले स्थान पर किया होगा, लेकिन मैं विशेष रूप से बीगलबोन ब्लैक के लिए ओपनसीवी को कस्टम संकलन पर गाइड का पालन कर रहा था और वे सभी नवीनतम 3.0 का इस्तेमाल करते थे, इसलिए मुझे लगा कि यह ठीक होगा। वैसे भी, यह अनुमान लगाया गया कि मैं संकलन प्रक्रिया को फिर से करने से पहले जांच कर लायक होगा क्योंकि मुझे रात भर ऐसा करने के लिए इसे सही करने के लिए कुछ दिन लगने का प्रयास किया गया है।

संपादित करें: बस अगर कोई और देखता है और जानना चाहता है कि मुझे क्या पता चला है। यह निश्चित रूप से ओपनसीवी 3.0 के रिलीज उम्मीदवार में एक बग है जिसे मैंने डाउनलोड किया था। मैं उस संस्करण के लिए एक फिक्स नहीं ढूंढ पाया और अंततः संस्करण 2.4.10 में डाउनग्रेड करना पड़ा। डाउनग्रेड के बाद, सब कुछ ठीक काम कर रहा है।

+1

एक बग की तरह लग रहा। मुझे लगता है कि ओपनसीवी जारीकर्ता ट्रैकर को बग रिपोर्ट जमा करना बेहतर होगा: http://code.opencv.org – jet47

+0

क्या यह एक बग बन गया? – ypx

+0

हां, यह एक बग साबित हुआ कि मुझे कोई जवाब नहीं मिला, इसलिए मैंने 2.4.10 को पुनः संकलित कर दिया और इसके बजाय इसका उपयोग किया। –

उत्तर

2

हालांकि यह है नहीं एक "OpenCV-समाधान" तुम सिर्फ डेटा भंडारण के लिए numpy-सरणियों उपयोग कर रहा है CV2-इंटरफेस के रूप में शुद्ध अजगर का उपयोग कर रंग चैनलों को पुनर्व्यवस्थित कर सकते हैं:

rgb_img = bgr_img[:,:,::-1] #bgr --> rgb 
bgr_img = rgb_img[:,:,::-1] #bgr --> rgb 
संबंधित मुद्दे