इन सभी OpenCV पायथन इंटरफेस के बीच क्या अंतर है?


88

वहां

  • opencv (OpenCV लोगों से पुस्तकालय),
  • cv (OpenCV लोगों से पुरानी लाइब्रेरी) और
  • pyopencvअपने पूर्ववर्ती के साथ ctypes-opencv

मुख्य अंतर क्या हैं और मुझे किसका उपयोग करना चाहिए?

जवाबों:


138

आधिकारिक तौर पर, ओपनसीवी दो प्रकार के पायथन इंटरफेस जारी करता है, cvऔर cv2

सीवी:

मैंने काम करना शुरू कर दिया cv। इसमें सभी OpenCV डेटा प्रकारों को संरक्षित किया जाता है। उदाहरण के लिए, जब लोड किया जाता है, तो चित्र प्रारूप के होते हैं cvMat, सी ++ के समान।

सरणी संचालन के लिए , आदि जैसे कई कार्य हैं cvSet2D, cvGet2Dऔर कुछ चर्चाएं कहती हैं, वे धीमी हैं।

ImageROI के लिए, आपको विशेष कार्यों की आवश्यकता है cvSetImageROI

यदि आप कॉन्ट्रास्ट पाते हैं, तो cvSeqसंरचनाएं लौटा दी जाती हैं जो कि पायथन सूचियों या न्यूमपी सरणियों की तुलना में काम करने के लिए इतनी अच्छी नहीं हैं।

(और मुझे लगता है, जल्द ही इसके विकास रोक दिया जाएगा। इससे पहले, वहाँ केवल था cv। बाद में, OpenCV दोनों के साथ आया था cvऔर cv2। अब, वहाँ नवीनतम विज्ञप्ति में, वहाँ केवल है cv2मॉड्यूल, और cvएक उपवर्ग के अंदर है cv2। आप कॉल करने की जरूरत है import cv2.cv as cvइसे एक्सेस करने के लिए।)

CV2:

और नवीनतम एक है cv2। इस में, सब कुछ के रूप में दिया जाता है NumPyजैसे वस्तुओं ndarray और native Pythonतरह की वस्तुओं lists, tuples, dictionary, आदि तो यह NumPy समर्थन की वजह से, आप किसी भी numpy आपरेशन यहाँ कर सकते हैं। NumPyएक अत्यधिक स्थिर और तेजी से सरणी प्रसंस्करण पुस्तकालय है।

उदाहरण के लिए, यदि आप एक छवि लोड करते हैं, तो एक ndarrayलौटा दी जाती है।

array[i,j] आपको (i, j) स्थिति में पिक्सेल मान देता है।

इसके अलावा, imageROI के लिए, सरणी स्लाइसिंग का उपयोग किया जा सकता है ROI=array[c1:c2,r1:r2]। अलग-अलग कार्यों की आवश्यकता नहीं।

दो छवियों को जोड़ने के लिए, किसी भी फ़ंक्शन को कॉल करने की आवश्यकता नहीं है, बस करें res = img1+img2। (लेकिन NumPy जोड़ छवियों की तरह uint8 सरणियों के लिए एक modulo ऑपरेशन है । अधिक जानने के लिए OpenCV और Numpy में मैट्रिक्स अंकगणित के बीच लेख अंतर देखें ।

वापस लौटे कंट्रोवर्सी Numpy सरणियों की सूची है। आप Contours - 1: Contours के बारे में विस्तृत चर्चा पा सकते हैं ।

संक्षेप में, cv2 के साथ सब कुछ सरल और बहुत तेज है।

OpenCV-Python इंटरफेस, cv और cv2 केcv2 स्टैक ओवरफ्लो प्रश्न प्रदर्शन की तुलना में NumPy की गति कैसे होती है, इस पर एक सरल चर्चा ।

pyopencv :

मैं इसके बारे में ज्यादा नहीं जानता क्योंकि मैंने इसका इस्तेमाल नहीं किया है। लेकिन लगता है कि इसने विकास को रोक दिया है।

मुझे लगता है कि आधिकारिक पुस्तकालयों पर रहना बेहतर होगा।

संक्षेप में, मैं आपको cv2 का उपयोग करने की सलाह दूंगा!

संपादित करें: आप पायथन के लिए विंडोजcv2 में इंस्टॉलेशन ओपनसीवी में मॉड्यूल के लिए इंस्टॉलेशन प्रक्रिया देख सकते हैं ।


यदि आप स्रोतों से OpenCV का निर्माण कर रहे हैं तो cv2 पायथन इंटरफ़ेस संकलित और स्थापित किया जाएगा। यदि आप लिनक्स या अन्य ओएस के लिए बाइनरी पैकेज का उपयोग कर रहे हैं, तो आपको अपने ओएस / वितरण प्रलेखन से परामर्श करना चाहिए। सहायता के लिए goo.gl/MUjXi देखें ।
टीएच

1
@Framester: इस लिंक में cv2 के लिए इंस्टॉलेशन प्रक्रिया देखें: opencvpython.blogspot.in/2012/05/…
Abid Rahman K

आबिद का जवाब बहुत अच्छा है। बस एक और बिंदु को जोड़ने के लिए: मैंने पायथन 3.x के साथ एक प्रोजेक्ट किया और एकमात्र तरीका जिससे मुझे opencv तक पहुंच प्राप्त हुई वह ctypes_opencv और मूल OpenCV 1.0 के माध्यम से था। यह OpenCV pre1.1 के लिए समर्थन का दावा करता है, लेकिन मुझे कभी भी यह काम नहीं मिला। इसके साथ, आप मूल cvSetROI, आदि C-type इंटरफ़ेस का उपयोग करेंगे।
कोबे जॉन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.