Code-Vervollständigung funktioniert nicht für OpenCV und Python

8

Ich benutze Ubuntu 14.04. Ich habe OpenCV mit Adrian Rosebrocks Guide installiert. Ich benutze auch PyCharm für die Programmierung von Python und opencv.

Mein Problem ist, dass ich Codevervollständigung für cv2-Module verwenden kann, aber die Codevervollständigung funktioniert nicht für Instanzen, die von cv2 initiiert werden. Ein Beispiel ist unten gezeigt.

Das funktioniert.

Aber das würde nicht.

Es gibt keinen Laufzeitfehler, wenn ich mein Programm wie erwartet schreibe. Eine solche Funktion funktioniert ohne Fehler.

    
Justin Case 29.03.2017, 12:22
quelle

1 Antwort

4

Das openCV-Python-Modul ist ein dynamisch generierter Wrapper von zugrunde liegende C ++ Bibliothek. PyCharm ist auf die Verfügbarkeit von Python-Quellcode angewiesen, um Autocomplete-Funktionalität bereitzustellen. Wenn der Quellcode fehlt (wie im opencv-Fall), generiert pycharm Skelettdateien mit Funktionsprototypen und setzt diese für die automatische Vervollständigung mit eingeschränkten Fähigkeiten ein.

Als Ergebnis, wenn Sie bei

automatisch vervollständigen %Vor%

es kann herausfinden, dass das Modul cv2 die folgenden Mitglieder hat und Vorschläge macht.

Auf der anderen Seite, wenn Sie

%Vor%

PyCharm kann herausfinden, dass Sie gerade eine Methode aus dem cv2-Modul aufgerufen und sie cap zugewiesen haben, aber keine Informationen über den Typ des Ergebnisses dieser Methode hat und nicht weiß, wo Sie nach Vorschlägen für

%Vor%

Wenn Sie die gleichen Dinge im Shell-Modus versuchen, sehen Sie das Verhalten, das Sie tatsächlich erwartet haben, da im Shell-Modus tatsächlich Live-Objekte untersucht werden (es fragt das erstellte cap-Objekt nach den Mitgliedern) und stellt diese als Vorschläge zur Verfügung )

Sie können auch Stubs für das opencv-Modul selbst schreiben, um die korrekte automatische Vervollständigung im Bearbeitungsmodus zu aktivieren.

Werfen Sie einen Blick hier

    
Giannis Spiliopoulos 04.04.2017 14:27
quelle