2010-01-10 2 views
1

J'utilise Python 2.6 contre OpenCV 2.0. J'ai commencé une capture de fichier et tiré des cadres. J'ai affiché l'image pour m'assurer qu'elle est valide. Quand j'appelle cette routine, les accidents de python:Pourquoi cette utilisation de Smooth provoque-t-elle le crash de Python?

def SmoothImage(self,SmoothingMaskSize=3): 
    temp=cv.CreateImage(cv.GetSize(self._lpImage),self._lpImage.depth,self._lpImage.nChannels) 
    cv.Smooth(self._lpImage,temp) 
    self._lpImage=temp 

Je l'ai aussi essayé de lissage en place, en utilisant cv.Smooth (self._lpImage, self._lpImage)

Je suis nouveau à Python - Est-ce que je manque quelque chose d'évident?

Merci!

+2

Si vous publiez le message d'erreur que je peux probablement vous aider :) – richo

+1

sans rapport avec votre question et problème. Vous utilisez le style de nommage C#, qui n'est pas le style de nommage python préféré. voir PEP-8 pour le style de nommage python. –

+0

Whoops- l'erreur est: pythonw.exe 0.0.0.0 4ae54f49 libcv200.dll c0000005 c0005acfc Comme je l'ai dit, je suis nouveau à Python et complètement ignorant de nommer styles :) Merci pour l'info que , Je vais chercher PEP-8. –

Répondre

0

Les liaisons fournies avec le programme d'installation OpenCV 2.0 sont buggées; J'ai eu un problème similaire où certaines opérations très simples ont déclenché des plantages. Compiler à partir de la source devrait le réparer.

+0

Merci Johannes! J'ai tiré la source de SVN et recompilé. Malgré la vérification dans CMake, le support python n'a pas été compilé, mais une fois que je l'ai fait manuellement, tout allait bien. –

0

Si vous n'avez pas besoin d'accéder aux parties orientées objet d'OpenCV, vous devriez jeter un oeil à ctypes-opencv, qui est un meilleur ensemble de liaisons python. Elle est amoureusement faite à la main, contrairement aux bindings SWIG générées avec OpenCV, et je n'y ai jamais trouvé de bugs.

http://code.google.com/p/ctypes-opencv/

0

Pouvez-vous isoler le problème en supprimant la définition de classe? Je reçois ce travail:

planes = [cv.CreateImage(cv.GetSize(image), cv.IPL_DEPTH_32F, 1) for i in range(3)] 
cv.Split(image, planes[0], planes[1], planes[2], None) 
for plane in planes: 
    cv.Smooth(plane, plane, smoothtype=cv.CV_GAUSSIAN, param1=9, param2=0, param3=0, param4=0)