Example #1
0
def getImageNStuff(imageFilee):

    f.br()
    f.br()

    # Load yolov3 model
    model = load_model(modelsFolder + '\\' + 'model.h5')

    image, image_w, image_h = f.load_image_pixels(imageFilee,
                                                  (input_w, input_h))

    # VVVVVV Niet nodig opzich

    #cv2.imshow("abc", image)
    #cv2.waitKey(0)
    #cv2.destroyAllWindows()

    image = expand_dims(
        image, 0
    )  # De keras code verwacht 4 dimensies, 1 plaatje heeft 3 dimensies (dat kan je zien door print(image) te doen)
    # als je dat wilt in de regel hierboven.
    # De '0' in de expand_dims betekent dat er een nulde, oftwel een eerste (omdat arrays beginnen bij nul),
    # dimensie wordt toegevoegd --> de nulde, eerste en tweede dimensies van het plaatje schuiven op naar de
    # eerste, tweede en derde dimensie
    # Deze nieuwe nulde dimensie staat dan voor het aantal plaatjes, bij ons nu natuurlijk maar 1, maar keras
    # verwacht er vaak al meerdere tegelijk bij het model.predict stukje

    print(image)

    # Maak de voorspelling met het model
    yhat = model.predict(image)

    # print([a.shape for a in yhat]) # Laat de dimensies zien van de array

    return image, image_w, image_h, model, yhat
Example #2
0
def initProgramFirstCheck():
    checked = False
    initBool = False  # Standaard nog niet geopend

    while not checked:
        # Vragen of het de eerste keer is van het programma en de checks ervoor snap je wel
        initString = input(
            "Is dit de eerste keer dat je het yolov3 programma opent? (Y/N) ")
        f.br()

        if initString == "Y":

            initBool = True

        elif initString == "N":
            initBool = False

        else:
            print("Verkeerde input, start opnieuw...")
            f.br()
            continue

        checked = True

    return initBool
Example #3
0
def decodeFrame(image, image_w, image_h, model, yhat, imageFile):

    boxes = list()
    for i in range(len(yhat)):
        # Decodeer de bounding boxes (de rechthoekjes om het herkende heen)
        boxes += dF.decode_netout(yhat[i][0], anchors[i], propability, input_h,
                                  input_w)

    # Zet de shape en size van de boxes weer om naar het originele plaatje ipv het 416x416  plaatje
    dF.correct_yolo_boxes(boxes, image_h, image_w, input_h, input_w)

    dF.do_nms(
        boxes, 0.5
    )  # zorg ervoor dat overlappende bounding boxes weg gehaald worden( 0.5 staat voor bounding boxes die 50% over een komen)

    v_boxes, v_labels, v_scores = f.get_boxes(boxes, labels, propability)

    f.br()
    print("Die tensorflow error net:")
    print(
        "'WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually.'"
    )
    print("Is niks ergs, maak geen zorgen")
    f.br()

    # eventjes de aparte boxen printen
    for i in range(len(v_boxes)):

        print(v_labels[i], v_scores[i])

    imageFinal = f.draw_boxes(imageFile, v_boxes, v_labels, v_scores, 0.5)

    print(imageFinal)

    cv2.imshow("window", imageFinal)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    cv2.imwrite(imageFile[:-4] + '_detected' + imageFile[-4:],
                (imageFinal).astype('uint8'))
Example #4
0
def downloadCheck():

    bestandsPad = os.path.join(weightsFolder, "yolov3.weights")

    if os.path.exists(bestandsPad):
        lokaleGrootte = int(os.stat(bestandsPad).st_size)
        externeGrootte = int(
            requests.get(preTrainedURL, stream=True).headers['content-length'])

        if lokaleGrootte == externeGrootte:
            print("Het lokale weights bestand klopt! Ga verder...")
            f.br()

        else:
            print(
                "Het lokale bestand klopt niet helemaal, hij wordt opnieuw gedownload..."
            )
            f.download(preTrainedURL, weightsFolder, (1024 * 16))

    else:
        print(
            'Programma is voor de eerste keer gestart, download wordt gestart...'
        )
        f.download(preTrainedURL, weightsFolder, (1024 * 16))
Example #5
0
def __main__():
    print(
        "Voordat de AI in gebruik kan worden genomen zal er automatisch een getraind model gedownload moeten worden..."
    )
    print(
        "Om dit helemaal succesvol te doen, moet bij het eerste gebruik bij de volgende vraag het plaatje worden geselecteerd..."
    )
    print(
        "Wanneer er wordt gevraagd om de bestandsnaam van een plaatje, kan het voorbeeldplaatje 'zebra.jpg' gebruikt worden..."
    )
    f.br()

    answer = input(
        'Wil je de AI op een (P)laatje testen, of op een (V)ideo? (P/V) ')
    f.br()

    #if answer == 'C':
    #    # Open het COCO script
    #    COCO.__main__()

    if answer == 'P':
        # Open het YOLO script
        YOLOv3.__main__()

    elif answer == 'V':

        videoDetect.__main__()
        sys.exit()

    else:
        answerRestart = input(
            "Verkeerde input gekregen, wil je het opnieuw proberen? (Y/N) ")
        f.br()

        if answerRestart == 'Y':
            # TrafficDetection.__main__()
            __main__()
            return

        elif answerRestart == 'N':
            print("Afsluiten...")
            sys.exit()

        else:
            print("Verkeerd antwoord, afsluiten...")
            sys.exit()
Example #6
0
def __main__():

    imageFilee = input(
        "Vul hier de bestandsnaam van de te detecteren foto in: ")

    downloadCheck()
    yoloModelCheck()

    f.br()
    print(
        "De lokale weights en model bestanden kloppen, er kan verder gegaan worden met het herkennen..."
    )
    f.br()

    f.br()
    print(
        "Het (voorbeeld) plaatje (of de (voorbeeld) video) pakken en herkennen met het model!"
    )
    image, image_w, image_h, model, yhat = getImageNStuff(imageFilee)

    decodeFrame(image, image_w, image_h, model, yhat, imageFilee)
Example #7
0
      for i in range(len(s1.attrName)):
        if i==0 or i==1:
          s1.attributes[i]="date";
          while(func.isdate(s1.attributes[i])==False):
            s1.attributes[i]=input(s1.attrName[i]+": ");#isdate
        elif(i==2):
          s1.attributes[i]="true";
          while(func.onlyNumber(s1.attributes[i])==True):
            s1.attributes[i]=input(s1.attrName[i]+": ");
        else:
          while(func.isEmpty(s1.attributes[i])==True or func.isSpecialSimpleChar(s1.attributes[i])==True):
            s1.attributes[i]=input(s1.attrName[i]+": ");
    
      system("clear");
      c1.printList();
      print(func.br());
      s1.printList();
      print(func.tab(2))
      resp=input("As informações estão corretas?(s/n): ");
      if resp=='s':
        print("resgistrado no Banco...");
        sett.callSystem()
      else:
         print(func.message(c1));
        #break;

        #sett.callSystem()
    
    
    
  elif escolhamenu=="2":
Example #8
0
from pathlib import Path

import functions as f

import matplotlib.pyplot as plt
import numpy as np
import skimage.io as io

# Eigen python packages
import YOLOv3
import videoDetect

# import TrafficDetection

# Start met printen naar de console en dingen vragen en dergelijke
f.br()


def __main__():
    print(
        "Voordat de AI in gebruik kan worden genomen zal er automatisch een getraind model gedownload moeten worden..."
    )
    print(
        "Om dit helemaal succesvol te doen, moet bij het eerste gebruik bij de volgende vraag het plaatje worden geselecteerd..."
    )
    print(
        "Wanneer er wordt gevraagd om de bestandsnaam van een plaatje, kan het voorbeeldplaatje 'zebra.jpg' gebruikt worden..."
    )
    f.br()

    answer = input(