Здравствуй, дорогой читатель, эта статья будет очень полезна для тех, кто хочет попробовать свои силы в программировании и не знает с чего начать или же уже начал, но столкнулся с какими-либо трудностями.
В этой статье речь пойдёт о правильной установке языка программирования Python и среды разработки PyCharm, их настройки. Также в ходе этой статьи мы создадим программу, способную получать изображение с камеры и при нахождении на нём человеческого лица, отправлять его фотографию на электронную почту. Подробно разберём, как избежать проблемы с установкой библиотеки компьютерного зрения OpenCV и как правильно настроить свою почту, для того чтобы программа могла с ней взаимодействовать.
Шаг 1-й: Установка и настройка Python и PyCharm.
Для начала установим язык программирования, сделать это можно по следующей ссылке: https://www.python.org/downloads/
Для удобства программирования установим среду разработки PyCharm. Сделать это можно по следующей ссылке https://www.jetbrains.com/pycharm/download/#section=windows
После того, как установочный пакет загрузился, нажимаем на него и у нас высвечивается следующее окно. Смело ставим по каждому из пунктов галочку и нажимаем Next.
Далее у нас открывается окно с выбором меню программы. Лучше всего выбрать предлагаемый по умолчанию JetBrains и нажать Instal(установить).
После установки всего открываем PyCharm, и нажимаем Create New Project (создать новый проект). Далее открывается окно, в котором мы можем настроить свой проект. По умолчанию PyCharm сам находит установленный на вашем компьютере Python и использует его в качестве интерпретатора.
Однако после того, как вы нажмёте Create и начнёте писать код, иногда случается так, что PyCharm выдаёт ошибку интерпретатора. В этом случае Вам нужно будет настроить его вручную.
Нажимаем : File>Setings> Python Interpreteter>No Interpreteter и если в открывшейся вкладке есть нужная вам версия Python, то выбираем её и начинаем программировать. Если нет, то нажимаем на Шестерёнку>Add…>System Interpreteter> нажимаем на многоточие и в появившемся окне ввода вбиваем полный адрес хранения вашего Python, выбираем в предложенном ниже списке Python exe, сохраняем наши изменения и вуаля, всё готово. Теперь мы можем экспериментировать без всяких препятствий.
Шаг 2-й: устанавливаем необходимые модули и пишем код.
Первым делом заимпортируем библиотеку компьютерного зрения OpenCV. Для этого лучше всего перейти в File-> Settings-> Project Interpreter, а затем добавьте с помощью кнопки «+» модуль «opencv-python» (в нашем случае) или же открыть терминал и вписать команду pip install opencv-python.
Теперь начинается самая интересная часть - написание программы.
Импортируем все нужные нам библиотеки. Для нашего проекта понадобится 2, а именно уже известный Вам OpenCV и SMTLIB, необходимый нам для отправки сообщений с Python (для его использования ничего дополнительно устанавливать не нужно, это модуль доступен нам «из коробки»)
import cv2
import smtplib
import os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
from platform import python_version
Теперь поработаем с модулем отправки сообщений. Оформим вид нашего письма и сделаем нашу небольшую базу данных, в которой введём почту получателей и отправителя.
recipients = ["почта получателя"]
sender = "почта отправителя"
subject = 'Заголовок сообщения'
text = ' основной текст сообщения <b><h1></h1> '
html = '<html><head></head><body><p>' + text + '</p></body></html>'
Обратимся к нашей нейросети и пропишем в программе путь к ней.
face_cascade_db = cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')
Далее обратимся к камере к компьютера через следующую команду:
cap = cv2.VideoCapture(0)
(В скобках пишется индекс камеры вашего компьютера, посмотреть его можно в диспетчере устройств , но чаще всего по умолчанию это 0)
Создадим цикл, в котором будет обрабатываться и выводиться изображение, делать фото и отправлять письмо
while True:
Получение изображения с камеры и его перевод в чёрно-белый формат
success, img = cap.read()
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
Создадим при распознавании лица вокруг него рамку
faces = face_cascade_db.detectMultiScale(img, 1.1, 19)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y),
Определим цвет рамки и её толщину в следующим порядке(Красный,Зелёный,Синий),Толщина)
(x + w, y + h), (0, 355, 300), 2)
Напишем команду для того, чтобы при распознавании лица делалась фотография
ret, frame = cap.read()
cv2.imwrite('camera0.png', frame)
Выведем получившийся результат
cv2.imshow('Result', img)
Создадим условие, чтобы цикл завершался после нажатия на «q»
if cv2.waitKey(1) & 0xff == ord('q'):
Добавляем сделанное фото в наше сообщение
filepath = "camera0.png"
basename = os.path.basename(filepath)
filesize = os.path.getsize(filepath)
Формируем письмо
msg = MIMEMultipart('alternative')
msg['Subject'] = subject
msg['From'] = 'Python script <' + sender + '>'
msg['To'] = ', '.join(recipients)
msg['Reply-To'] = sender
msg['Return-Path'] = sender
msg['X-Mailer'] = 'Python/' + (python_version())
part_text = MIMEText(text, 'plain')
part_html = MIMEText(html, 'html')
part_file = MIMEBase('application', 'octet-stream; name="{}"'.format(basename))
part_file.set_payload(open(filepath, "rb").read())
part_file.add_header('Content-Description', basename)
part_file.add_header('Content-Disposition', 'attachment; filename="{}"; size={}'.format(basename, filesize))
encoders.encode_base64(part_file)
msg.attach(part_text)
msg.attach(part_html)
msg.attach(part_file)
Обозначаем сервис почты, которой будем пользоваться,
сообщаем программе почту отправителя, пароль почты и завершаем программу
mail = smtplib.SMTP_SSL('smtp.gmail.com')
mail.login('Ваша почта', 'пароль от почты')
mail.sendmail(sender, recipients, msg.as_string())
mail.quit()
break
cap.release()
cv2.destroyAllWindows()
Но и это ещё не конец, если вы поспешили и запустили программу, не дочитав до этого момента, то наверняка столкнулись с ошибкой. Она вызвана тем, что каждая электронная почта очень надёжно защищена и не даёт допуск к использованию всем подряд сервисам, поэтому, если Вы хотите, чтобы всё работало, то необходимо настроить разрешение своей почты. Это можно сделать по методу описанному здесь https://support.google.com/mail/answer/7126229?p=BadCredentials&visit_id=637766474915685255-1365792779&rd=2&pli=1 или, если этот метод не помог, то придётся ещё немного повозиться.
Заходим в свою почту и выбираем «Управление аккаунтом Google» и выбираем вкладку «Безопасность» и находим настройки разрешений для «ненадёжных приложений»
Переходим к этим настройкам и смело открываем доступ для «небезопасных приложений»
Вот и всё! Теперь у вас есть интересная программа, которую вы можете как угодно изменять под себя, всё ограничивается только вашим воображением.
Спасибо за внимание, надеюсь, что статья была полезна для Вас и напоследок желаю больше пробовать себя в чём-то новом и экспериментировать!
#python #pycharm #opencv #компьютерное зрение #программирование