[PYTHON] Stoppschilderkennung Entwicklung des Visualisierungsteils Teil5 Zeigen Sie an, was erkannt wurde, als ein Objekt erkannt wurde

Bis zum letzten Mal

Die zuletzt implementierten Funktionen sind wie folgt. Wenn ein Objekt auf Yolov5 erkannt wird ➡ Socket-Kommunikation wird ausgeführt. ➡ Audio wird abgespielt, wenn Socket-Kommunikation empfangen wird. (Mehrere)

Diesmal zu implementierende Funktionen

Mit der bisherigen Implementierung war es möglich, mit Ton zu visualisieren, aber es war nicht möglich, die tatsächliche Sache zu visualisieren. Im Gegenteil, es gibt eine Geschichte, die Sie verstehen können, wenn Sie sich das Kamerabild ansehen, aber diesmal scheint es eine Funktion zu sein, die bedeutungslos zu sein scheint, aber ich habe ein Programm beschrieben, das visualisiert, was Sie erkennen. Ich denke

Warum diese Funktion realisieren?

Ich möchte dies später im Web visualisieren, daher habe ich diese Funktion realisiert, damit sie zu diesem Zeitpunkt mit einem Socket übersprungen werden kann.

Über die Implementierung

Dieses Mal habe ich den Socket-Kommunikationsteil zu einer Funktion gemacht, daher werde ich kurz darauf posten. Der Inhalt ist in Teil3 und Teil4 geschrieben.

Steckdosenteil

Client-Teil

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())

Wenn die Anzahl der zu erkennenden Dinge zunimmt, kann die Funktion hier auch dann behandelt werden, wenn die Anzahl der zu erkennenden Dinge zunimmt, indem die Anzahl nach dem Socket erhöht und die Anzahl im Teil der Daten = '1' geändert wird.

server.py


#Erstellen Sie einen Socket-Server
from playsound import playsound
import socket
cont=1
# AF =Bedeutet IPv4
# TCP/Für IP SOCK_Verwenden Sie STREAM
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    #Geben Sie die IP-Adresse und den Port an
    s.bind(('', 50007))
    #1 Verbindung
    s.listen(1)
    #Warten Sie, bis Sie eine Verbindung hergestellt haben
    while True:
        #Wenn jemand besucht, geben Sie die Verbindung und Adresse ein
        conn, addr = s.accept()
        with conn:
            while True:
                #Empfange Daten
                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')

Anerkennungsteil

detect.py


                    if label1=="cell phone":
                     print("Ich habe ein Smartphone gefunden")
                     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)+"Ich habe ein Smartphone gefunden"+"\n")
                    if label1=="book":
                     print("Ich habe ein Buch gefunden")
                     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)+"Ich habe ein Buch gefunden"+"\n")

Der Serverteil kann behandelt werden, indem der Nummernteil von data3 = "'1'" geändert und die if-Anweisung erhöht wird.

Visualisierungsteil

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

Dies kann erreicht werden, indem dieser Code nach dem Einbetten von Label 1 == "": eingebettet wird.

Schließlich

Bisher habe ich bis zu Teil 5 geschrieben, und bis auf die Aufnahmefunktion habe ich fast die Funktionen realisiert, die ich mit yolov5 realisieren möchte. Daher möchte ich den Teil yolov5 vorerst beenden. Als Nächstes möchte ich ein Visualisierungswebpart erstellen. .. Wenn ich eine Funktion finde, die realisiert zu sein scheint, schreibe ich diesen Artikel, sodass die fortlaufende Veröffentlichung endet.

Recommended Posts

Stoppschilderkennung Entwicklung des Visualisierungsteils Teil5 Zeigen Sie an, was erkannt wurde, als ein Objekt erkannt wurde
Stoppschilderkennung Entwicklung des Visualisierungsteils Teil3 Benachrichtigung per Spracheingabe über Socket-Kommunikation, wenn ein Objekt erkannt wird
Stoppschilderkennung Entwicklung des Visualisierungsteils Teil2 Benachrichtigen Sie ein anderes System per Socket-Kommunikation, wenn ein Objekt erkannt wird
Stoppschilderkennung Entwicklung des Visualisierungsteils Teil4 Benachrichtigung per Spracheingabe über Socket-Kommunikation, wenn ein Objekt erkannt wird (mehrere Editionen)
Stoppschilderkennung Entwicklung des Visualisierungsteils Teil1 Erkennung und Aufzeichnung von Objekten * Dieses Mal wird der Stuhl erkannt (das Modell wurde nicht von mir selbst hergestellt)
Versuchen Sie, ein Objekt mit RaspberryPi zu erkennen ~ Teil 1: Vergleich der Erkennungsgeschwindigkeit ~
Verringern Sie den Klassennamen der Anzeige des Erkennungsergebnisses der Objekterkennung