2016-05-31 13 views
2

Ich habe Probleme mit der Installation von opencv mit Python 3.5.Python OpenCV Importfehler mit Python 3.5

Ich habe die cv-Dateien verknüpft, sondern auf import cv2 bekomme ich eine Fehlermeldung, ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2.so, 2): Symbol not found: _PyCObject_Type oder genauer gesagt:

/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/Jamie/Desktop/tester/test.py Traceback (most recent call last): File "/Users/Jamie/Desktop/tester/test.py", line 2, in import cv File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv.py", line 1, in from cv2.cv import * ImportError:dlopen(/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2.so, 2): Symbol not found: _PyCObject_Type Referenced from: /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2.so Expected in: flat namespace in /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/cv2.so

I cv.py und cv2.so von Ort /usr/local/Cellar/opencv/2.4.12_2/lib/python2.7/site-packages in richtig verbunden haben /Library/Frameworks/Python.framework/Versions/3.5/bin

Würde jemand bitte helfen können?

Vielen Dank

+1

Sind Sie ein opencv für Python kompiliert zu laden versuchen, 2 mit Python 3.5? Es wird nicht funktionieren. Ich habe hier dokumentiert, wie ich vor ein paar Monaten opencv3 für Python 3 kompiliert habe, wenn es hilft: https://github.com/julienpalard/grid-finder –

Antwort

1

eine Antwort gefunden - die Anweisungen auf this website folgen, aber Sie müssen die Version von Python ändern Sie verwenden.

Außerdem habe ich mich nicht mit den virtuellen Umgebungen beschäftigt.

Und schließlich cv2.so heißt eigentlich cv2.cpython-35m-darwin.so im Build/lib-Ordner, den Sie machen.

Dann funktioniert es.

+1

Für die Zukunft könnte man auch einfach einen Symlink mit 'ln -s cv2 erstellen .cpython-35m-darwin.so cv2.so', so dass Sie es mit 'import cv2' importieren können. :-) – gglasses

+1

Hey gglasses, wie erstelle ich einen Symlink wie du gesagt hast? – Tam

+0

ln -s cv2.cpython-35m-darwin.so cv2.so – user391339

0

Große Antwort JamieS, ich folgte auch dieser Website. Ich habe versucht, den gesamten Prozess wiederholbar zu machen mit diesen Zielen zu machen ..

opencv-build: 
    source $(VENV_DIR)/bin/activate && \ 
    cd $(OPENCV_SRC) && \ 
    mkdir -p build && \ 
    cd build && \ 
    cmake -D CMAKE_BUILD_TYPE=RELEASE \ 
    -D CMAKE_INSTALL_PREFIX=$(realpath $(BUILD_DIR)) \ 
    -D PYTHON3_NUMPY_INCLUDE_DIRS=$(realpath $(VENV_DIR)/lib/python3.5/site-packages/numpy/core/include) \ 
    -D BUILD_opencv_python3=ON \ 
    -D INSTALL_C_EXAMPLES=OFF \ 
    -D INSTALL_PYTHON_EXAMPLES=ON \ 
    -D OPENCV_EXTRA_MODULES_PATH=$(realpath $(OPENCV_CONTRIB_SRC)/modules) \ 
    -D BUILD_EXAMPLES=ON .. && \ 
    make -j4 -C . 

Um es jedoch in python3 virtuellen env erscheinen müssen Sie dies dann tun:

so-copy: 
    cp $(realpath $(OPENCV_SRC)/build/lib/cv2.so) $(realpath $(VENV_DIR)/lib/python3.5/site-packages/) 
    cp $(realpath $(OPENCV_SRC)/build/lib/python3/cv2.cpython-35m-darwin.so) $(realpath $(VENV_DIR)/lib/python3.5/site-packages/) 

Dann können Sie, wenn es testen arbeitet ..

import cv2 # Imports without problems... 

ich für osx denke, die cv2.cpython-35m-darwin.so ist das einzige, was Sie brauchen, aber ich beide nur kopiert.

4

Keine Notwendigkeit, die Python-Version zu ändern, können Sie den BiB-Befehl öffnen cmd (Admin-Modus) und geben Sie verwenden nur

opencv-Python pip installieren