Dlib как установить
Перейти к содержимому

Dlib как установить

  • автор:

How to install dlib library for Python in Windows 10

Hi! This is my first blog (or article depending on what you call) in English. Anyway, I am writing this blog because I have been facing with the trouble of this package for a while. I was trying to google it for the solution but I could not find the alternative one. So! this is my solution to install dlib library in Windows 10.

Some people might say that why don’t you just use conda install which is already complied. It is much easy to install. Well… I agree and I could do it. However, other packages, such as face_recognition could not leverage dlib when you used conda install . Hence, we need to use pip install .

Preparation

First thing first, there are two things required (really need it indeed!).

  • CMake: This is because dlib was developed in C based programming language, so it needs this program to use it. It can be found in the link https://cmake.org/download/. To make sure matching with your operation system, in our case is Windows 10 64-bit version.
  • Visual studio: As I mentioned before, dlib is C based programming language. Another thing that really need is compiler. The Visual studio can be downloaded in the link https://visualstudio.microsoft.com/visual-cpp-build-tools/. After finishing the installation, you need to install additional packages for C, C++ programming, which is Packages CMake tools for Windows

Note

Sometimes we need manage the Windows PATH environment for CMake. (If you already added during installation, you can skip this section).

For checking whether the PATH already added or not, you can go to Environment Variables on Windows by go to This PC > Properties > Advance system settings. Then, go to Tab Advanced and click on Environment Variables.

Another windows will pop-up and click Edit…

If you are unable to find CMake path, you should add the CMake installed directory like image below.

Install

Everything is looking good so far. Now we can install dlib into our python environment. First of all, you need to install CMake library.

pip install cmake

Then, you can install dlib library using pip install .

pip install dlib

After passing enter, you laptop or desktop will run the C, C++ Compiler. If you got something like image below, you would be fine.

After these all, you will get dilb installed on your Windows 10 by not using conda install compiler.

For further discussion or anyone would like to contact me. We could do it over the LinkdIn below.

Не могу установить dlib

Не могу dlib установить
я пытаюсь установить пакет face_recognition pip install face_recognition выходит ошибка .

Dlib установить в python anywhere
Здравствуйте, пытаюсь выложить django приложение в котором используется библиотека dlib. .

Не могу установить Windows из-за того,что не могу сделать выбор установки
Подскажите, я устанавливаю виндовс XP,с диска,на экране высвечивает загруска с диска С, ниже.

.NET и dlib
Всем привет, пытаюсь написать приложение с библиотекой dlib. Написал по гайду Все работает.

Установка dlib ошибка
Здравствуйте, из-за чего появляется данная ошибка? .

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Установка OpenCV и Dlib в QT
Начинаю переезд с консольного приложения VS в проект с QT. у меня там были подключены две.

QT Creator + Dlib + OpenCV
Кто-нибудь устанавливал Dlib в QT Creator? Перевожу проект из VS в QT, и библиотека Dlib не хочет.

dlib shape predictor
Добрый день. Есть тут те, кто работал с распознаванием лица, а именно с библиотекой dlib и shape.

Установка библиотеки dlib
Долго мучаюсь с установкой dlib http://dlib.net/compile.html. Документация не помогает. Подскажите.

Ошибка при установке dlib
C:\Users\венера\Desktop\dlib-master\build>cmake .. — Building for: Visual Studio 16 2019 —.

Ошибка при подключении dlib
Пытаюсь установить библиотеку dlib через pip, выходит ошибка о том что мне нужен visual studio c++.

Управляем звуком ПК от активности пользователя с помощью Python

Без промедления начнём. Нам нужно установить следующее ПО:

  • Windows 10
  • Anaconda 3 (Python 3.8)
  • Visual Studio 2019 (Community) — объясню позже, зачем она понадобится.

Открываем Anaconda Prompt (Anaconda3) и устанавливаем следующие пакеты:

pip install opencv-python pip install dlib pip install face_recognition

И уже на этом моменте начнутся проблемы с dlib.

Решаем проблему с dlib

Я перепробовал все решения, что нашёл в интернете и они оказались неактуальными — раз, два, три, официальное руководство и видео есть. Поэтому будем собирать пакет вручную.

Итак, первая же ошибка говорит о том, что у нас не установлен cmake.

ERROR: CMake must be installed to build dlib

ERROR: CMake must be installed to build dlib

Не закрывая консоль, вводим следующую команду:

pip install cmake

Проблем при установке быть не должно

Пробуем установить пакет той же командой (pip install dlib) , но на этот раз получаем новую ошибку:

Отсутствуют элементы Visual Studio

Ошибка явно указывает, что у меня, скорее всего, стоит студия с элементами только для C# — и она оказывается права. Открываем Visual Studio Installer, выбираем «Изменить», в вкладке «Рабочие нагрузки» в разделе «Классические и мобильные приложения» выбираем пункт «Разработка классических приложений на С++»:

Разработка классических приложений на С++Ждем окончания установки

Почему важно оставить все галочки, которые предлагает Visual Studio. У меня с интернетом плоховато, поэтому я решил не скачивать пакет SDK для Windows, на что получил следующую ошибку:

Не нашли компилятор

Я начал искать решение этой ошибки, пробовать менять тип компилятора (cmake -G » Visual Studio 16 2019″), но только стоило установить SDK, как все проблемы ушли.

Я пробовал данный метод на двух ПК и отмечу ещё пару подводных камней. Самое главное — Visual Studio должна быть 2019 года. У меня под рукой был офлайн установщик только 2017 — я мигом его поставил, делаю команду на установку пакета и получаю ошибку, что нужна свежая Microsoft Visual C++ версии 14.0. Вторая проблема была связана с тем, что даже установленная студия не могла скомпилировать проект. Помогла дополнительная установка Visual C++ 2015 Build Tools и Microsoft Build Tools 2015.

Открываем вновь Anaconda Prompt, используем ту же самую команду и ждём, когда соберется проект (около 5 минут):

Всё прошло успешно

Управляем громкостью

Вариантов оказалось несколько (ссылка), но чем проще — тем лучше. На русском язычном StackOverflow предложили использовать простую библиотеку от Paradoxis — ей и воспользуемся. Чтобы установить её, нам нужно скачать архив, пройти по пути C:\ProgramData\Anaconda3\Lib и перенести файлы keyboard.py, sound.py из архива. Проблем с использованием не возникало, поэтому идём дальше

Собираем события мыши

Самым популярным модулем для автоматизации управления мышью/клавиатурой оказался pynput. Устанавливаем так же через (pip install dlib) . У модуля в целом неплохое описание — https://pynput.readthedocs.io/en/latest/mouse.html . Но у меня возникли сложности при получении событий. Я написал простую функцию:

from pynput import mouse def func_mouse(): with mouse.Events() as events: for event in events: if event == mouse.Events.Scroll or mouse.Events.Click: #print('Переместил мышку/нажал кнопку/скролл колесиком: <>\n'.format(event)) print('Делаю половину громкости: ', time.ctime()) Sound.volume_set(volum_half) break

Самое интересное, что если раскомментировать самую первую строчку и посмотреть на событие, которое привело выходу из цикла, то там можно увидеть Move. Если вы заметили, в условии if про него не слово. Без разницы, делал я только скролл колесиком или только нажатие любой клавиши мыши — все равно просто движение мыши приводит к выходу из цикла. В целом, мне нужно все действия (Scroll, Click, Move), но такое поведение я объяснить не могу. Возможно я где-то ошибаюсь, поэтому можете поправить.

А что в итоге?

Adam Geitgey, автор библиотеки face recognition, в своём репозитории имеет очень хороший набор примеров, которые многие используют при написании статей: https://github.com/ageitgey/face_recognition/tree/master/examples

Воспользуемся одним из них и получим следующий код, который можно скачать по ссылке: Activity.ipynb, Activity.py

# Подключаем нужные библиотеки import cv2 import face_recognition # Получаем данные с устройства (веб камера у меня всего одна, поэтому в аргументах 0) video_capture = cv2.VideoCapture(0) # Инициализируем переменные face_locations = [] from sound import Sound Sound.volume_up() # увеличим громкость на 2 единицы current = Sound.current_volume() # текущая громкость, если кому-то нужно volum_half=50 # 50% громкость volum_full=100 # 100% громкость Sound.volume_max() # выставляем сразу по максимуму # Работа со временем # Подключаем модуль для работы со временем import time # Подключаем потоки from threading import Thread import threading # Функция для работы с активностью мыши from pynput import mouse def func_mouse(): with mouse.Events() as events: for event in events: if event == mouse.Events.Scroll or mouse.Events.Click: #print('Переместил мышку/нажал кнопку/скролл колесиком: <>\n'.format(event)) print('Делаю половину громкости: ', time.ctime()) Sound.volume_set(volum_half) break # Делаем отдельную функцию с напоминанием def not_find(): #print("Cкрипт на 15 секунд начинается ", time.ctime()) print('Делаю 100% громкости: ', time.ctime()) #Sound.volume_set(volum_full) Sound.volume_max() # Секунды на выполнение #local_time = 15 # Ждём нужное количество секунд, цикл в это время ничего не делает #time.sleep(local_time) # Вызываю функцию поиска действий по мышке func_mouse() #print("Cкрипт на 15 сек прошел") # А тут уже основная часть кода while True: ret, frame = video_capture.read() ''' # Resize frame of video to 1/2 size for faster face recognition processing small_frame = cv2.resize(frame, (0, 0), fx=0.50, fy=0.50) rgb_frame = small_frame[:, :, ::-1] ''' rgb_frame = frame[:, :, ::-1] face_locations = face_recognition.face_locations(rgb_frame) number_of_face = len(face_locations) ''' #print("Я нашел <> лицо(лица) в данном окне".format(number_of_face)) #print("Я нашел <> лицо(лица) в данном окне".format(len(face_locations))) ''' if number_of_face < 1: print("Я не нашел лицо/лица в данном окне, начинаю работу:", time.ctime()) ''' th = Thread(target=not_find, args=()) # Создаём новый поток th.start() # И запускаем его # Пока работает поток, выведем на экран через 10 секунд, что основной цикл в работе ''' #time.sleep(5) print("Поток мыши заработал в основном цикле: ", time.ctime()) #thread = threading.Timer(60, not_find) #thread.start() not_find() ''' thread = threading.Timer(60, func_mouse) thread.start() print("Поток мыши заработал.\n") # Пока работает поток, выведем на экран через 10 секунд, что основной цикл в работе ''' #time.sleep(10) print("Пока поток работает, основной цикл поиска лица в работе.\n") else: #все хорошо, за ПК кто-то есть print("Я нашел лицо/лица в данном окне в", time.ctime()) Sound.volume_set(volum_half) for top, right, bottom, left in face_locations: cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2) cv2.imshow('Video', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break video_capture.release() cv2.destroyAllWindows()

Суть кода предельно проста: бегаем в цикле, как только появилось хотя бы одно лицо (а точнее координаты), то звук делаем 50%. Если не нашёл никого поблизости, то запускаем цикл с мышкой.

Тестирование в бою

Ожидание и реальность

Если вы посмотрели видео, то поняли, что результат ещё далёк от реальной эксплуатации.

Признаю честно - до этого момента никогда не сталкивался с многопоточностью на Python, поэтому "с наскоку" тему взять не удалось и результат по видео понятен. Есть неплохая статья на Хабре, описывающая различные методы многопоточности, применяемые в языке. Пока у меня решения нету по этой теме нету - будет повод разобраться лучше и дописать код/статью с учетом этого.

Так же возникает закономерный вопрос - а если вместо живого человека поставить перед монитором картинку? Да, она распознает, что, скорее всего, не совсем верно. Мне попался очень хороший материал по поводу определения живого лица в реальном времени - https://www.machinelearningmastery.ru/real-time-face-liveness-detection-with-python-keras-and-opencv-c35dc70dafd3/ , но это уже немного другой уровень и думаю новичкам это будет посложнее. Но эксперименты с нейронными сетями я чуть позже повторю, чтобы тоже проверить верность и повторяемость данного руководства.

Немаловажным фактором на качество распознавания оказывает получаемое изображение с веб-камеры. Предложение использовать 1/4 изображения (сжатие его) приводит только к ухудшению - моё лицо алгоритм распознать так и не смог. Для повышения качества предлагают использовать MTCNN face detector (пример использования), либо что-нибудь посложнее из абзаца выше.

Другая интересная особенность - таймеры в Питоне. Я, опять же, признаю, что ни разу до этого не было нужды в них, но все статьях сводится к тому, чтобы ставить поток в sleep(кол-во секунд). А если мне нужно сделать так, чтобы основной поток был в работе, а по истечению n-ое количества секунд не было активности, то выполнялась моя функция? Использовать демонов (daemon)? Так это не совсем то, что нужно. Писать отдельную программу, которая взаимодействует с другой? Возможно, но единство программы пропадает.

Заключение

На своём примере могу точно сказать - не все руководства одинаково полезны и простая задача может перерасти в сложную. Я понимаю, что большинство материалов является переводом/простым копированием документации. Но если ты пишешь руководство, то проверь хотя бы на тестовой системе, что написанные тобой действия точно повторимы. Пробуйте, экспериментируйте - это хороший повод изучить и узнать новое.

P.S. Предлагаю вам, читатели, обсудить в комментариях статью - ваши идеи, замечания, уточнения.

Загрузка библиотеки C++ dlib для Windows

Это приложение для Windows под названием dlib C ++ Library, последний выпуск которого можно загрузить как dlib-19.19.tar.bz2. Его можно запустить онлайн в бесплатном хостинг-провайдере OnWorks для рабочих станций.

Загрузите и запустите онлайн это приложение под названием dlib C ++ Library с OnWorks бесплатно.

Следуйте этим инструкциям, чтобы запустить это приложение:

- 1. Загрузил это приложение на свой компьютер.

- 2. Введите в нашем файловом менеджере https://www.onworks.net/myfiles.php?username=XXXXX с желаемым именем пользователя.

- 3. Загрузите это приложение в такой файловый менеджер.

- 4. Запустите любой онлайн-эмулятор OS OnWorks с этого сайта, но лучше онлайн-эмулятор Windows.

- 5. В только что запущенной ОС Windows OnWorks перейдите в наш файловый менеджер https://www.onworks.net/myfiles.php?username=XXXXX с желаемым именем пользователя.

- 6. Скачайте приложение и установите его.

- 7. Загрузите Wine из репозиториев программного обеспечения вашего дистрибутива Linux. После установки вы можете дважды щелкнуть приложение, чтобы запустить его с помощью Wine. Вы также можете попробовать PlayOnLinux, необычный интерфейс поверх Wine, который поможет вам установить популярные программы и игры для Windows.

Wine - это способ запустить программное обеспечение Windows в Linux, но без Windows. Wine - это уровень совместимости с Windows с открытым исходным кодом, который может запускать программы Windows непосредственно на любом рабочем столе Linux. По сути, Wine пытается заново реализовать Windows с нуля, чтобы можно было запускать все эти Windows-приложения, фактически не нуждаясь в Windows.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *