2012-02-10 9 views
5

Soy nuevo en OpenCV y me gustaría usar su enlace de Python.¿Por qué los módulos Python cv2 dependen de (antiguo) cv

Al probar las muestras en OSX, me di

1.) Las ventanas imshow crea no son de tamaño variable

2.) puedo arreglar eso con una llamada previa a cv2.namedWindow, como: cv2.namedWindow ('zoom', cv2.cv.CV_WINDOW_NORMAL)

se puede añadir símbolos como CV_WINDOW_NORMAL del cv en cv2!? ¿Quién tiene derechos de compromiso para la vinculación de Python de openCV?

Gracias, Sebastián Haase

+0

Los enlaces de Python son solo una envoltura alrededor de la interfaz C++, que es principalmente un envoltorio alrededor de la interfaz C. En cuanto a su última pregunta, envíe un mensaje a la lista de correo de OpenCV y pregúnteles :) – karlphillip

Respuesta

9

Hay algunas omisions en la corriente nueva lib cv2. Por lo general, son constantes que no se han migrado a cv2 todavía y todavía están en cv solamente. Aquí hay un código para ayudarle a encontrarlos:

import cv2 
import cv2.cv as cv 
nms = [(n.lower(), n) for n in dir(cv)] # list of everything in the cv module 
nms2 = [(n.lower(), n) for n in dir(cv2)] # list of everything in the cv2 module 

search = 'window' 

print "in cv2\n ",[m[1] for m in nms2 if m[0].find(search.lower())>-1] 
print "in cv\n ",[m[1] for m in nms if m[0].find(search.lower())>-1] 

cv2 es un envoltorio más fiel en torno librerías de C++ que el cv anterior. Lo encontré confuso al principio, pero es mucho más fácil una vez que haces el cambio. El código es mucho más fácil de leer y las manipulaciones de la matriz numpy son muy rápidas.

Sugiero que encuentre y use las constantes de cv mientras informa sus omisiones como errores al rastreador de errores de opencv en willowgarage. cv2 es fresco y de menta, pero mejorará.

FYI. Vale la pena ejemplificar las ventanas nombradas antes de su uso, matándolas también al salir. IMHO

E.g.

import cv2 
if __name__ == '__main__': 
    cap = cv2.VideoCapture(0) # webcam 0 
    cv2.namedWindow("input") 
    cv2.namedWindow("grey") 
    key = -1 
    while(key < 0): 
     success, img = cap.read() 
     cv2.imshow("input", img) 
     grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
     cv2.imshow("grey", grey) 
     key = cv2.waitKey(1) 
    cv2.destroyAllWindows() 
+0

gracias por la respuesta: ¿sabe quién (cuántas personas) se han comprometido a hacer esas correcciones (en el enlace de pitón)? – sebhaase

+0

no, lo siento. te sugiero que te unas/suscribas a dev maillist y preguntes. Muy buena gente servicial. ¿Está dispuesto a arreglar – Neon22

+0

qué lista de correo? Hay dos en sourceforge, que están esencialmente muertos (2 publicaciones por mes) y el principal en los grupos de Yahoo, que es muy lento y no obtuve mucha respuesta en los últimos dos meses en que me he unido (me uní un poco antes Estaba preguntando aquí). ¿Sabes sobre otro? – sebhaase

Cuestiones relacionadas