tem
opencv
(a biblioteca dos caras do OpenCV),cv
(a antiga biblioteca dos caras do OpenCV) epyopencv
com seu antecessorctypes-opencv
.
Quais são as principais diferenças e quais devo usar?
Oficialmente, o OpenCV lança dois tipos de interfaces Python cv
e cv2
.
cv:
Comecei a trabalhar cv
. Neste, todos os tipos de dados OpenCV são preservados como tal. Por exemplo, quando carregadas, as imagens têm o cvMat
mesmo formato que em C ++.
Para as operações de matriz, há várias funções como cvSet2D
, cvGet2D
, etc. E algumas discussões dizem, eles são mais lentos.
Para imageROI, você precisa de funções especiais como cvSetImageROI
.
Se você encontrar contornos, cvSeq
estruturas são retornadas que não são tão boas para trabalhar em comparação com listas Python ou matrizes NumPy.
(E eu acho que em breve seu desenvolvimento será interrompido. Anteriormente, havia apenas cv
. Mais tarde, o OpenCV veio com ambos cv
e cv2
. Agora, nos últimos lançamentos, existe apenas o cv2
módulo e cv
há uma subclasse dentro cv2
. Você precisa chamar import cv2.cv as cv
para acessá-lo.)
cv2:
E o mais recente é cv2
. Neste, tudo é retornado como NumPy
objetos como ndarray
e native Python
objetos como lists
, tuples
, dictionary
, etc. Então, devido a este apoio NumPy, você pode fazer qualquer operação numpy aqui. NumPy
é uma biblioteca de processamento de array altamente estável e rápida.
Por exemplo, se você carregar uma imagem, um ndarray
será retornado.
array[i,j]
fornece o valor do pixel na posição (i, j).
Além disso, para imageROI, o corte de matriz pode ser usado como ROI=array[c1:c2,r1:r2]
. Não há necessidade de funções separadas.
Para adicionar duas imagens, não há necessidade de chamar nenhuma função, basta fazer res = img1+img2
. (Mas a adição de NumPy é uma operação de módulo para arrays uint8 como imagens. Consulte o artigo Diferença entre aritmética de matrizes em OpenCV e Numpy para saber mais.
Os contornos retornados são listas de matrizes Numpy. Você pode encontrar uma discussão detalhada sobre Contours in Contours - 1: Getting Started .
Resumindo, com o cv2 tudo é simplificado e muito rápido.
Uma discussão simples sobre como o NumPy se acelera cv2
está na pergunta Stack Overflow Comparação de desempenho de interfaces OpenCV-Python, cv e cv2 .
pyopencv :
Não sei muito sobre isso, já que não usei. Mas parece ter impedido o desenvolvimento posterior.
Acho que seria melhor ficar com as bibliotecas oficiais.
Resumindo, eu recomendo que você use o cv2!
EDITAR: Você pode ver o procedimento de instalação do cv2
módulo em Instalar OpenCV no Windows para Python .
pip install opencv-python