Var
opencv
(OpenCV çalışanlarından kütüphane),cv
(OpenCV çalışanlarının eski kütüphanesi) vepyopencv
selefi ilectypes-opencv
.
Ana farklar nelerdir ve hangisini kullanmalıyım?
Yanıtlar:
Resmi olarak, OpenCV iki tür Python arabirimi yayınlar cv
ve cv2
.
Özgeçmiş:
Üzerinde çalışmaya başladım cv
. Bunda, tüm OpenCV veri türleri bu şekilde korunur. Örneğin, yüklendiğinde, görüntüler cvMat
C ++ ile aynı formattadır .
Dizi işlemleri için, orada gibi çeşitli fonksiyonları cvSet2D
, cvGet2D
vb Ve bazı tartışmalar dedim, onlar daha yavaştır.
İmageROI için, gibi özel işlevlere ihtiyacınız var cvSetImageROI
.
Eğer hatlarını bulursanız, cvSeq
yapılar Python listeleri veya NumPy diziler ile karşılaştırıldığında ile çalışmak için çok iyi değil döndürülür.
(Ve sanırım, yakında gelişimi durdurulacak. Daha önce, sadece vardı cv
. Daha sonra, OpenCV hem cv
ve hem de geldi cv2
. Şimdi, en son sürümlerde sadece cv2
modül var ve cv
içinde bir alt sınıf var cv2
. Aramalısın import cv2.cv as cv
erişmek için.)
cv2:
Ve sonuncusu cv2
. Bu, her şey olarak döndürülür NumPy
gibi nesneler ndarray
ve native Python
benzeri nesneleri lists
, tuples
, dictionary
vb Yani nedeniyle bu NumPy desteği, buradan herhangi numpy işlemi yapabilirsiniz. NumPy
oldukça kararlı ve hızlı bir dizi işleme kitaplığıdır.
Örneğin, bir görüntü yüklerseniz, bir ndarray
döndürülür.
array[i,j]
(i, j) konumundaki piksel değerini verir.
Ayrıca, imageROI için dizi dilimleme gibi kullanılabilir ROI=array[c1:c2,r1:r2]
. Ayrı işlevlere gerek yok.
İki resim eklemek için herhangi bir işlevi çağırmaya gerek yoktur, sadece yapın res = img1+img2
. (Ancak NumPy eklenmesi, görüntüler gibi uint8 dizileri için bir modulo işlemidir. Daha fazla bilgi için OpenCV ve Numpy'de Matris Aritmetiği arasındaki fark makalesine bakın .
Döndürülen konturlar, Numpy dizilerinin listeleridir. Kontürler - 1: Başlarken'deki Kontürler hakkında ayrıntılı bir tartışma bulabilirsiniz .
Kısacası, cv2 ile her şey basitleştirilmiş ve oldukça hızlıdır.
cv2
Stack Overflow sorusunda NumPy hızının nasıl arttığına dair basit bir tartışma OpenCV-Python arabirimleri, cv ve cv2'nin performans karşılaştırması .
pyopencv :
Kullanmadığım için bu konuda pek bir şey bilmiyorum. Ancak daha fazla geliştirmeyi durdurmuş gibi görünüyor.
Resmi kütüphanelere bağlı kalmanın daha iyi olacağını düşünüyorum.
Kısaca cv2 kullanmanızı tavsiye ederim!
DÜZENLEME: cv2
Modüle ilişkin kurulum prosedürünü Python için Windows'ta OpenCV'yi Yükleme bölümünde görebilirsiniz .