Matériel pour présentation à LT
J'ai essayé de transformer la reconnaissance faciale (OpenCV) qui a été faite jusqu'à présent dans un bot
La description de l'article est la suivante
** En quelque sorte! ** **
Jusqu'à présent, je l'ai déjà fait avec Slack Bot.
Mais je me demande si LINE Bot est aussi ...
C'est vrai, ** Discord peut créer des bots, non? ?? ?? ** **
J'ai recherché Discord Bot
Ça a l'air amusant alors je l'ai fait ☆
Comment créer un bot Discord a été mis à jour l'autre jour. (C'est un peu difficile ...)
Ce dont vous avez besoin est le suivant Installez ce dont vous avez besoin!
pip install discord #Utilisé lorsque vous voulez faire diverses choses avec discorde
pip install opencv-python #Requis lors de l'utilisation des fonctions OpenCV (utilisé avec cv2 sur python)
pip install os #Vous pouvez utiliser des fonctions qui dépendent du système d'exploitation
pip install requests #Utilisé pour la communication HTTP
pip install shutil #Manipulation de haut niveau des fichiers et des collections de fichiers
La structure des répertoires est la suivante
-- dis_test
-- cascade
-- haarcascade_frontalface_alt.xml
-- img
-- dis.py
Les données d'apprentissage du visage se trouvent ici J'ai utilisé.
Discord Bot
dis_bot.py
# coding:utf-8
import discord
import time
import requests
import shutil
import cv2
import os
# from scripts.photo_processing import PhotoProcessing
IMG_PATH = "./img/"
IMG_SIZE = (128, 128)
FACE_CASCADE_PATH = "./cascade/haarcascade_frontalface_alt.xml"
FACE_CASCADE = cv2.CascadeClassifier(FACE_CASCADE_PATH)
TOKEN = "TOKEN ID"
client = discord.Client()
now_time = time.time()
times = time.gmtime(now_time)
#traitement de démarrage du bot
@client.event
async def on_ready():
channel = client.get_channel(Identifiant de la chaine)
await channel.send("Salut! Comment vas-tu?")
#Lors de la réception d'un message
@client.event
async def on_message(message):
#Ignorer si l'expéditeur est un bot
if message.author.bot:
return
if message.content.startswith('trim') and len(message.attachments) != 0:
channel_id = message.channel.id
url = message.attachments[0].url
file_name = url.rsplit("/", 1)[1]
#Enregistrer l'image
rst = requests.get(url, stream = True)
open_file = open(IMG_PATH + file_name, "wb")
shutil.copyfileobj(rst.raw, open_file)
open_file.close()
#Examen de l'image
img_file = cv2.imread(IMG_PATH + file_name, cv2.IMREAD_COLOR)
# processing
gray_file = cv2.cvtColor(img_file, cv2.COLOR_BGR2GRAY)
front_face_list = FACE_CASCADE.detectMultiScale(gray_file, minSize=(50, 50), minNeighbors=3)
if len(front_face_list) > 0:
# trimming
for (x, y, width, height) in front_face_list:
trim_file = img_file[y:y+height, x:x+width]
trim_file = cv2.resize(trim_file, IMG_SIZE)
cv2.imwrite("{0}trim_{1}".format(IMG_PATH, file_name), trim_file)
await message.channel.send('', file=discord.File("{0}trim_{1}".format(IMG_PATH, file_name)))
else:
await message.channel.send("Le visage n'a pas été authentifié.")
#Supprimer l'image
os.remove(IMG_PATH + file_name)
os.remove("{0}trim_{1}".format(IMG_PATH, file_name))
client.run(TOKEN)
Résultat de sortie Ligne de commande
Il reconnaît correctement le visage et le coupe
Bien sûr, plusieurs personnes peuvent couper
Il semble que l'image recadrée puisse être utilisée comme icône! (Je ne l'utilise pas) C'est tout pour Discord Bot x Face Recognition (˘ω˘)
Recommended Posts