Détection de panneau d'arrêt Développement de la partie de visualisation part5 Afficher ce qui a été détecté lorsqu'un objet a été détecté

Jusqu'à la dernière fois

Les fonctions implémentées la dernière fois sont les suivantes. Lorsqu'un objet est détecté sur le Yolov5 ➡ La communication par socket est effectuée. ➡ L'audio est lu lorsque la communication par socket est reçue. (Multiple)

Fonctions à implémenter cette fois

Avec la mise en œuvre jusqu'à présent, il était possible de visualiser avec du son, mais il n'était pas possible de visualiser la chose réelle. Au contraire, il y a une histoire que vous pouvez comprendre en regardant l'image de la caméra, mais cette fois c'est peut-être une fonction qui semble dénuée de sens, mais j'ai décrit un programme qui visualise ce que vous reconnaissez. je pense

Pourquoi réaliser cette fonction

Je veux visualiser cela sur le Web plus tard, j'ai donc réalisé cette fonction afin qu'elle puisse être ignorée avec une prise à ce moment-là.

À propos de la mise en œuvre

Cette fois, j'ai fait de la partie communication socket une fonction, donc je la posterai brièvement, le contenu est écrit en part3 et part4.

partie de prise

Partie client

detect.py


def socket1():
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s2:
                         s2.connect(('127.0.0.1', 50007))
                         BUFFER_SIZE=1024
                         data1='1'
                         s2.send(data1.encode())
                         print(s2.recv(BUFFER_SIZE).decode())

Si le nombre de choses à reconnaître augmente, la fonction ici peut gérer même si le nombre de choses à reconnaître augmente en augmentant le nombre après socket et en changeant le nombre dans la partie data = '1'.

server.py


#Créer un serveur socket
from playsound import playsound
import socket
cont=1
# AF =Signifie IPv4
# TCP/Pour IP, SOCK_Utilisez STREAM
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    #Spécifiez l'adresse IP et le port
    s.bind(('', 50007))
    #1 connexion
    s.listen(1)
    #Attendez de vous connecter
    while True:
        #Lorsqu'un internaute visite, saisissez la connexion et l'adresse
        conn, addr = s.accept()
        with conn:
            while True:
                #Recevoir des données
                data = conn.recv(1024)
                if not data:    
                    break
                else:
                 data2=str(data)
                 data3=(data2.replace('b', ''))
                 conn.sendall(b'Received: ' + data)
                if data3 == "'1'":
                        playsound('2.wav')
                if data3 == "'2'":
                        playsound('3.wav')

Partie reconnaissance

detect.py


                    if label1=="cell phone":
                     print("J'ai trouvé un smartphone")
                     cv2.imwrite('sumaho.jpg',im0)
                     img = cv2.imread('sumaho.jpg')
                     cv2.imshow('sumaho', img)

                     socket1()
                     with open('daystext/'+str(d_today)+'.txt', 'a') as f:
                         dt_now = datetime.datetime.now()
                         f.write(str(dt_now)+"J'ai trouvé un smartphone"+"\n")
                    if label1=="book":
                     print("J'ai trouvé un livre")
                     cv2.imwrite('book.jpg',im0)
                     img = cv2.imread('book.jpg')
                     cv2.imshow('book', img)
                     socket2()
                     with open('daystext/'+str(d_today)+'.txt', 'a') as f:
                         dt_now = datetime.datetime.now()
                         f.write(str(dt_now)+"J'ai trouvé un livre"+"\n")

La partie serveur peut être gérée en modifiant la partie numérique de data3 = "'1'" et en augmentant l'instruction if.

Partie visualisation

                     img = cv2.imread('sumaho.jpg')
                     cv2.imshow('sumaho', img)

Ceci peut être réalisé en incorporant ce code après if label 1 == "":.

finalement

J'ai écrit jusqu'à part5 jusqu'à présent, et à l'exception de la fonction d'enregistrement, j'ai presque réalisé les fonctions que je veux réaliser avec yolov5, donc j'aimerais terminer la partie yolov5 pour le moment. Ensuite, j'aimerais créer un composant WebPart de visualisation. .. Si je propose une fonction qui semble être réalisée, j'écrirai cet article, donc la publication continue se terminera.

Recommended Posts

Détection de panneau d'arrêt Développement de la partie de visualisation part5 Afficher ce qui a été détecté lorsqu'un objet a été détecté
Détection de panneau d'arrêt Développement de la partie visualisation partie 3 Notifier par la voix à l'aide de la communication par socket lorsqu'un objet est détecté
Détection de panneau d'arrêt Développement de la partie visualisation partie 2 Notifier un autre système par communication socket lorsqu'un objet est détecté
Détection de panneau d'arrêt Développement de la partie de visualisation partie 4 Notifier par la voix à l'aide de la communication socket lorsqu'un objet est détecté (éditions multiples)
Détection de panneau d'arrêt Développement de la partie visualisation partie 1 Détection et enregistrement des objets * Cette fois, la chaise est détectée (le modèle n'est pas fabriqué par mes soins)
Essayez de détecter un objet avec RaspberryPi ~ Partie 1: Comparaison de la vitesse de détection ~
Diminuer le nom de classe de l'affichage des résultats de détection de la détection d'objets