Materialien für die Präsentation bei LT
Ich habe versucht, die bisherige Gesichtserkennung (OpenCV) in einen Bot zu verwandeln
Die Artikelbeschreibung lautet wie folgt
** Irgendwie! ** ** **
Bis jetzt habe ich es schon mit Slack Bot geschafft.
Aber ich frage mich, ob LINE Bot auch ...
Das ist richtig, ** Discord kann Bots machen, oder? ?? ?? ** ** **
Ich habe Discord Bot recherchiert
Es sieht lustig aus, also habe ich es geschafft ☆
So erstellen Sie einen Discord-Bot wurde neulich aktualisiert. (Es ist ein bisschen rau ...)
Was Sie brauchen, ist wie folgt Installieren Sie, was Sie brauchen!
pip install discord #Wird verwendet, wenn Sie verschiedene Dinge mit Zwietracht tun möchten
pip install opencv-python #Erforderlich bei Verwendung von OpenCV-Funktionen (wird mit cv2 unter Python verwendet)
pip install os #Sie können Funktionen verwenden, die vom Betriebssystem abhängen
pip install requests #Wird für die HTTP-Kommunikation verwendet
pip install shutil #Manipulation von Dateien und Dateisammlungen auf hoher Ebene
Die Verzeichnisstruktur ist wie folgt
-- dis_test
-- cascade
-- haarcascade_frontalface_alt.xml
-- img
-- dis.py
Gesichtslerndaten sind hier Ich benutzte.
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)
#Bot-Startverarbeitung
@client.event
async def on_ready():
channel = client.get_channel(Kanal ID)
await channel.send("Hallo! wie gehts?")
#Beim Empfang einer Nachricht
@client.event
async def on_message(message):
#Ignorieren Sie, wenn der Absender ein Bot ist
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]
#Bild speichern
rst = requests.get(url, stream = True)
open_file = open(IMG_PATH + file_name, "wb")
shutil.copyfileobj(rst.raw, open_file)
open_file.close()
#Bildprüfung
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("Das Gesicht wurde nicht authentifiziert.")
#Lösche Bild
os.remove(IMG_PATH + file_name)
os.remove("{0}trim_{1}".format(IMG_PATH, file_name))
client.run(TOKEN)
Ausgabeergebnis Befehlszeile
Es erkennt das Gesicht richtig und schneidet es
Natürlich können mehrere Personen trimmen
Es scheint, dass das zugeschnittene Bild als Symbol verwendet werden kann! (Ich benutze es nicht) Das ist alles für Discord Bot x Gesichtserkennung (˘ω˘)
Recommended Posts