Ada
opencv
(perpustakaan dari orang-orang OpenCV),cv
(pustaka lama dari orang-orang OpenCV) danpyopencv
dengan pendahulunyactypes-opencv
.
Apa perbedaan utama dan mana yang harus saya gunakan?
Jawaban:
Secara resmi, OpenCV merilis dua jenis antarmuka Python, cv
dan cv2
.
CV:
Saya mulai bekerja cv
. Dalam hal ini, semua tipe data OpenCV dipertahankan seperti itu. Misalnya, saat dimuat, gambar memiliki format cvMat
, sama seperti di C ++.
Untuk operasi array, ada beberapa fungsi seperti cvSet2D
, cvGet2D
, dll Dan beberapa diskusi mengatakan, mereka lebih lambat.
Untuk imageROI, Anda memerlukan fungsi khusus seperti cvSetImageROI
.
Jika Anda menemukan kontur, cvSeq
struktur dikembalikan yang tidak begitu baik untuk digunakan dibandingkan dengan daftar Python atau array NumPy.
(Dan menurut saya, pengembangannya akan segera dihentikan. Sebelumnya, hanya ada cv
. Nanti, OpenCV hadir dengan keduanya cv
dan cv2
. Sekarang, di rilis terbaru, hanya ada cv2
modul, dan cv
ada subclass di dalamnya cv2
. Anda perlu memanggil import cv2.cv as cv
untuk mengaksesnya.)
cv2:
Dan yang terbaru adalah cv2
. Dalam hal ini, semuanya dikembalikan sebagai NumPy
objek seperti ndarray
dan native Python
benda seperti lists
, tuples
, dictionary
, dll Jadi karena dukungan NumPy ini, Anda dapat melakukan operasi numpy sini. NumPy
adalah pustaka pemrosesan larik yang sangat stabil dan cepat.
Misalnya, jika Anda memuat gambar, sebuah ndarray
dikembalikan.
array[i,j]
memberi Anda nilai piksel pada posisi (i, j).
Selain itu, untuk imageROI, pengiris larik dapat digunakan seperti ROI=array[c1:c2,r1:r2]
. Tidak perlu fungsi terpisah.
Untuk menambahkan dua gambar, tidak perlu memanggil fungsi apa pun, lakukan saja res = img1+img2
. (Tetapi penambahan NumPy adalah operasi modulo untuk array uint8 seperti gambar. Lihat artikel Perbedaan antara Aritmatika Matriks di OpenCV dan Numpy untuk mengetahui lebih lanjut.
Kontur yang dikembalikan adalah daftar array Numpy. Anda dapat menemukan pembahasan rinci tentang Kontur dalam Kontur - 1: Memulai .
Singkatnya, dengan cv2 semuanya disederhanakan dan cukup cepat.
Diskusi sederhana tentang bagaimana NumPy mempercepat cv2
dalam pertanyaan Stack Overflow Perbandingan kinerja antarmuka OpenCV-Python, cv dan cv2 .
pyopencv :
Saya tidak tahu banyak tentang ini karena saya belum menggunakannya. Tetapi tampaknya telah menghentikan pengembangan lebih lanjut.
Saya pikir akan lebih baik untuk tetap menggunakan perpustakaan resmi.
Singkatnya, saya akan merekomendasikan Anda untuk menggunakan cv2!
EDIT: Anda dapat melihat prosedur instalasi untuk cv2
modul di Instal OpenCV di Windows untuk Python .