2017-03-29 21 views
8

Używam Ubuntu 14.04. Zainstalowałem OpenCV za pomocą przewodnika Adriana Rosebrocka. Używam również PyCharm do programowania Pythona i OpenCV.Uzupełnianie kodu nie działa dla OpenCV i Python

Moim problemem jest to, że mogę używać uzupełniania kodu dla modułów cv2, ale ukończenie kodu nie będzie działać dla instancji inicjowanych z cv2. Przykład jest pokazany poniżej.

This one works.

But this one wouldn't.

nie ma błędu czasu pracy, gdy piszę program, zgodnie z oczekiwaniami. Taki, że cap.isOpened() działa bezbłędnie.

+0

link na przycisk [Guide] (http://www.pyimagesearch.com/2015/06/22/install-opencv-3-0-and-python-2-7 -on-ubuntu /) wymienione. –

Odpowiedz

4

Moduł python openCV to dynamically generated wrapper podstawowej biblioteki C++. PyCharm opiera się na dostępności kodu źródłowego Pythona w celu zapewnienia funkcji autouzupełniania. Gdy brakuje kodu źródłowego (jak w przypadku opencv), pycharm wygeneruje pliki szkieletu z prototypami funkcji i będzie polegać na tych do autouzupełniania, ale z ograniczonymi możliwościami.

W rezultacie podczas autouzupełniania w

cv2. 

może zorientować się, że CV2 moduł składa się z następujących członków i zapewniają sugestie.

Z drugiej strony, jeśli

cap = cv2.VideoCapture(file_name) 

pycharm można dowiedzieć się, że po prostu nazywa się metodę z modułem CV2 i przypisać go do cap ale nie ma informacji o typie wyniku tej metody i nie wiem, gdzie iść szukać wskazówek dla

cap. 

Jeśli spróbujesz tych samych rzeczy w trybie powłoki, widać zachowanie rzeczywiście Spodziewałem się zobaczyć, gdyż w trybie powłoki rzeczywiście introspekcji żywych obiektów (będzie poprosić utworzony obiekt cap co członkowie posiada i dostarczyć je jako sugestie)


Można również napisać odcinki dla OpenCV moduł siebie, aby umożliwić poprawne autouzupełnianie w trybie edycji.

spojrzeć here

+0

Jak się okazuje, w konsoli pythona autouzupełnianie PyCharm działa zgodnie z zamierzeniami, tak jak wspomniałeś. Jednak nie rozwiązuje to mojego problemu, gdy próbuję wykorzystać autouzupełnianie w edytorze. Czy istnieje sposób na egzekwowanie introspekcji również w edytorze? –

+0

@Justin, nie zgadzam się, że to odpowiada na twoje pytanie. Objaśnia to zachowanie, które widzisz i zapewnia sposób na osiągnięcie pożądanego zachowania (wypisywanie skrótów do modułu opencv). Ponieważ nie jest to banalna ilość pracy, nie powinieneś oczekiwać, że ją dostarczę. Jeśli chodzi o introspekcję w edytorze, byłoby to trudne i niebezpieczne, ponieważ wszystko, co napisałeś w edytorze, musiało zostać najpierw ocenione w interpreterze pytona. –

Powiązane problemy