Ошибка запуска библиотеки на python
Я следую инструкциям в соответствии с http://npatta01.github.io/2015/08/10/dlib/ но когда я пытаюсь запустить (я использую sudo),
python python_examples/face_detector.py examples/faces/2007_007763.jpg
забрать ошибку. Во-первых, ошибка была
AttributeError: 'module' object has no attribute 'image_window'
в строке 8. Теперь ошибка Illegal instruction (core dumped)
но я не знаю почему. Пожалуйста, помогите мне правильно добавить библиотеку.
import sys
import dlib
from skimage import io
detector = dlib.get_frontal_face_detector()
win = dlib.image_window()
for f in sys.argv[1:]:
print("Processing file: {}".format(f))
img = io.imread(f)
# The 1 in the second argument indicates that we should upsample the image
# 1 time. This will make everything bigger and allow us to detect more
# faces.
dets = detector(img, 1)
print("Number of faces detected: {}".format(len(dets)))
for i, d in enumerate(dets):
print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format(
i, d.left(), d.top(), d.right(), d.bottom()))
win.clear_overlay()
win.set_image(img)
win.add_overlay(dets)
dlib.hit_enter_to_continue()
# Finally, if you really want to you can ask the detector to tell you the score
# for each detection. The score is bigger for more confident detections.
# The third argument to run is an optional adjustment to the detection threshold,
# where a negative value will return more detections and a positive value fewer.
# Also, the idx tells you which of the face sub-detectors matched. This can be
# used to broadly identify faces in different orientations.
if (len(sys.argv[1:]) > 0):
img = io.imread(sys.argv[1])
dets, scores, idx = detector.run(img, 1, -1)
for i, d in enumerate(dets):
print("Detection {}, score: {}, face_type:{}".format(
d, scores[i], idx[i]))
2 ответа
Как я вижу в вашем коде:
detector = dlib.get_frontal_face_detector()
win = dlib.image_window()
Первая строка работает, а вторая - нет. Это означает, что dlib установлен, но он скомпилирован без поддержки графического интерфейса
В исходном коде dlib мы видим, что если определен макрос DLIB_NO_GUI_SUPPORT - в модуле dlib не будет функции image_window. Этот макрос определяется автоматически, если сценарии CMake не могут найти библиотеки X11
Вы должны убедиться, что dlib скомпилирован с поддержкой графического интерфейса. Для этого сначала установите libx11-dev в вашу систему, если вы работаете в Linux, или XQuartz для Mac.
При сборке dlib с запуском python setup.py install --yes DLIB_JPEG_SUPPORT
- проверьте свои сообщения. Если есть ошибки или предупреждения - исправьте их
Я отвечаю на этот вопрос, потому что столкнулся с той же проблемой, выполнив
conda install -c conda-forge dlib
а также
pip install dlib
Я попытался найти и получил несколько полезных ссылок, и ниже одной ссылки был сохранен мой день. Таким образом, перечисляя детали здесь тоже..
https://gist.github.com/ageitgey/629d75c1baac34dfa5ca2a1928a7aeaf
Лучше будет скомпилировать последний код из Github, чем устанавливать его из conda / pip. Это должно гарантировать, что dlib скомпилирован с поддержкой графического интерфейса.
Установить зависимости
sudo apt-get update
Установить Boost
sudo apt-get install libboost-all-dev
Установите другие зависимости (возможно, большинство из них уже установлено в вашей системе)
apt-get install -y --fix-missing build-essential cmake gfortran git wget curl graphicsmagick libgraphicsmagick1-dev libatlas-dev libavcodec-dev libavformat-dev libboost-all-dev libgtk2.0-dev libjpeg-dev liblapack-dev libswscale-dev pkg-config python3-dev python3-numpy software-properties-common zip
apt-get clean
Создайте последний код dlib из Github. Предположения: - Ubuntu 16.04 или выше - не имеет графического процессора nVidia и не имеет установленных Cuda и cuDNN и не хочет ускорения графического процессора
Клонировать код из github:
git clone https://github.com/davisking/dlib.git
Создайте основную библиотеку dlib:
cd dlib
mkdir build; cd build; cmake .. -DDLIB_USE_CUDA=0 -DUSE_AVX_INSTRUCTIONS=1; cmake --build .
Соберите и установите расширения Python:
cd ..
python setup.py install --yes USE_AVX_INSTRUCTIONS --no DLIB_USE_CUDA
убедитесь, что они указывают на правильный питон (если у вас установлен anaconda поверх ванильного питона Ubuntu, вам следует установить пакет, указывающий на anaconda).
если вы все еще сталкиваетесь с ошибкой GCC, как показано ниже
lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
затем убедитесь, что вы устанавливаете пакет Python ниже
conda install libgcc
На этом этапе вы сможете успешно запустить python и ввести import dlib.