def update(self):
        number = input_manager.read()

        if number == -1:
            messagebox.showerror(
                'Error',
                'No arduino connected on Port {}!\nPlease connect an arduino and restart the app.'
                .format(input_manager.port))
        else:
            if number and number.isdigit():
                print(number)
                number = int(number)
                if not database.check(number, self.students,
                                      database.file_name):
                    self.canvas['background'] = '#21cf0f'
                    self.canvas.itemconfig(
                        self.text, text='Free to pass... Have a nice lunch!')
                    psound.playsound('enter_sound.wav')
                    psound.playsound('enter_sound.wav')
                else:
                    self.canvas['background'] = '#e81f1f'
                    self.canvas.itemconfig(
                        self.text,
                        text="Oh... It seems that you've eaten already!")
                    psound.playsound('deny_sound.wav')

                self.last_change = time.perf_counter()
                self.has_reseted = False

            self.canvas.after(10, self.update)
            if time.perf_counter(
            ) >= self.last_change + self.time_until_reset and not self.has_reseted:
                self.reset_scene()
                self.has_reseted = True
Пример #2
0
def update_preferences(allergy, diet):
    # Current user
    user = get_user()

    # Checks if user set preferences before and update otherwise add
    check = database.check(user, "preferences")
    if check:
        database.update_pref(user, allergy, diet)
    else:
        database.add_pref(user, allergy, diet)
    return
Пример #3
0
def register():
    """Register user"""

    session.clear()

    # User reached route via POST (as by submitting a form via POST)
    if request.method == "POST":

        # Checks if username/password is given
        if not request.form.get("username"):
            flash("Please enter username", category='danger')
            return render_template("register.html")
        elif not request.form.get("password"):
            flash("Please enter password", category='danger')
            return render_template("register.html")

        # Checks if passwords match
        elif request.form.get("password") != request.form.get("confirmation"):
            flash("passwords do not match", category='danger')
            return render_template("register.html")

        # Checks if username is not taken
        username = request.form.get("username")
        rows = database.user_in_db(username)
        #rows =  db.execute("SELECT * FROM users WHERE username = %s", username)
        if len(rows) >= 1:
            flash("Username is already taken", category='danger')
            return render_template("register.html")

        # Puts username(UN) and password(PW) in database
        else:
            PW = generate_password_hash(request.form.get("password"))
            database.insert_in_users(username, PW)

            #Remember which user has logged in
            data = database.user_in_db(username)
            session["user_id"] = data[0]['user_id']

            # Check if the user already made a menu, and if so display that menu
            check = database.check(get_IP(), "meal")
            if len(check) == 1:
                database.ip_to_id(session['user_id'], "meal")
                database.ip_to_id(session['user_id'], "preferences")

                return redirect("/menu")

        # Redirect to home page
        return redirect("/")

    # User reached route via GET (as by clicking a link or via redirect)
    else:
        return render_template("register.html")
Пример #4
0
    def btn1(self):
        uid1 = self.uid.text
        flag = database.check(uid1)
        if (not flag):
            flag1 = 1
            print("valid")
            App.get_running_app().stop()
            if (facematch.video(uid1)):
                mock.check(1)
            else:
                notmatch.check(1)

        else:
            duplicate.check(1)

        return
Пример #5
0
    def __init__(self):
        super(add1, self).__init__()
        self.setupUi(self)
        x = str(ThirdWindow.kodyk)
        self.codeLE.setText(str(x))
        self.check = database.check(str(self.codeLE.text()))

        if self.check != "":
            self.nameLE.setText(str(self.check[0]))
            self.measure.setText(str(self.check[1]))
            self.addtoBtn.setEnabled(False)
            self.combo.setEnabled(False)
        else:
            x = database.addto()
            self.combo.addItems(x)

        self.przyciski.accepted.connect(self.accept)
        self.przyciski.rejected.connect(self.reject)
        self.addtoBtn.clicked.connect(self.addto)
Пример #6
0
def login():
    """Log user in"""

    # Forget any user_id
    session.clear()

    if request.method == "POST":

        # Ensure username was submitted
        if not request.form.get("username"):
            flash("Please enter username", category='danger')
            return render_template("login.html")

        # Ensure password was submitted
        elif not request.form.get("password"):
            flash("Please enter password", category='danger')
            return render_template("login.html")

        # Query database for username
        rows = database.user_in_db(request.form.get('username'))

        # Ensure username exists and password is correct
        if len(rows) != 1 or not check_password_hash(
                rows[0]["hash"], request.form.get("password")):
            flash("Invalid password", category='danger')
            return render_template("login.html")

        # Remember which user has logged in
        session["user_id"] = rows[0]["user_id"]

        # Redirect naar menu als bestaat
        user = get_user()
        menu = database.check(user, "meal")
        if menu:
            return redirect("/menu")

        # Redirect user to home page
        return redirect("/")

    # User reached route via GET (as by clicking a link or via redirect)
    else:
        return render_template("login.html")
Пример #7
0
 def index(self):
     if 'doi' in request.args:
         global doi_s
         doi_s = str(request.args['doi'])
     else:
         return 'Error:'
     global out_db
     if doi_s == 'all':
         out_db = database.read_all()
         return redirect(url_for('ApiView:display_all'))
     try:
         doi.validate_doi(doi_s)
         domain = doi.get_real_url_from_doi(doi_s)
     except ValueError:
         return 'Invalid doi'
     doi_temp = database.check([doi_s])
     if doi_temp:
         scrap = scrape.Scrape()
         scrap.scrape([domain], current_app.config['DICT_OF_SPIDERS'])
     out_db = database.read([doi_s])
     return redirect(url_for('ApiView:display_all'))
Пример #8
0
 def search_doi(self):
     global out_db, doi_s
     list_doi = []
     if request.method == 'POST':
         if 'doi' in request.form:
             list_doi = request.form['doi'].split(',')
         if 'file' in request.files:
             file = request.files['file']
             if file and self.allowed_file(file.filename):
                 filename = secure_filename(file.filename)
                 extension = file.filename.rsplit('.', 1)[1].lower()
                 path = os.path.join(current_app.config['UPLOAD_FOLDER'], filename)
                 file.save(path)
                 list_doi = self.upload_contents(extension, path)
             else:
                 flash('Please upload only csv and json formats')
         list_doi = list(dict.fromkeys(list_doi))
         doi_s = list_doi
         domain = {}
         for i in list_doi:
             try:
                 doi.validate_doi(i)
                 domain[i] = doi.get_real_url_from_doi(i)
             except ValueError:
                 flash(f'{i} : is not valid , please try again')
                 doi_s.remove(i)
         if doi_s is None:
             return redirect(url_for('DOIView:index'))
         doi_temp = database.check(doi_s)
         if doi_temp:
             doi_ = doi_temp
             domains = [domain[i] for i in doi_ if i in domain]
             doi_temp.clear()
             scrap = scrape.Scrape()
             success = scrap.scrape(domains, app.config['DICT_OF_SPIDERS'])
             if success:
                 for i in success:
                     print('i in succscc', i)
         out_db = database.read(doi_s)
     return render_template("search/search_doi.html", context=out_db)
def main():
    # argument for input video/image/calibration
    ap = argparse.ArgumentParser()
    ap.add_argument("-v", "--video", help="path to video file")

    ap.add_argument("-i", "--image", help="Path to the image")

    ap.add_argument("-c", "--calibration", help="image or video or camera")
    args = vars(ap.parse_args())

    if args.get("calibration", True):
        imgOriginalScene = cv2.imread(args["calibration"])
        if imgOriginalScene is None:
            print("Please check again the path of image or argument !")

        imgOriginalScene = imutils.resize(imgOriginalScene, width=640)
        cal.calibration(imgOriginalScene)
        return

    if args.get("video", True):
        camera = cv2.VideoCapture(args["video"])
        if camera is None:
            print("   Please check again the path of video or argument !")
        loop = True

    elif args.get("image", True):
        #imgOriginalScene = cv2.imread(args["image"])
        imgOriginalScene = cv2.imread("tes_plat_indo/B6703WJF.jpg")
        if imgOriginalScene is None:
            print("   Please check again the path of image or argument !")
        loop = False
    else:
        #camera = cv2.VideoCapture("rtsp://*****:*****@192.168.0.159:554/PSIA/streaming/channels/101")
        camera = cv2.VideoCapture(
            "rtsp://192.168.0.10:554/user=admin&password=&channel=1&stream=0.sdp?"
        )
        #camera = cv2.VideoCapture("rtsp://*****:*****@192.168.0.26:554/PSIA/streaming/channels/301")
        #camera = cv2.VideoCapture(0)
        loop = True

    # add knn library for detect chars
    blnKNNTrainingSuccessful = DetectChars.loadKNNDataAndTrainKNN(
    )  # attempt KNN training

    if blnKNNTrainingSuccessful == False:  # if KNN training was not successful
        print(
            "\nerror: KNN traning was not successful\n")  # show error message
        return
    count = 0
    # not very important, just iterating for license array haha
    license = []
    VER = np.zeros(VERIF)
    for x in VER:
        license.append("")
    numlicense = ""
    knn = 0

    # Looping for Video
    while (loop):
        # grab the current frame
        (grabbed, frame) = camera.read()
        #frame = camera.read()
        if args.get("video") and not grabbed:
            break
        # resize the frame and convert it to grayscale
        imgOriginalScene = imutils.resize(frame)
        imgGrayscale, imgThresh = pp.preprocess(imgOriginalScene)
        cv2.imshow("threshold", imgThresh)
        #imgOriginalScene = imutils.transform (imgOriginalScene)
        imgOriginalScene, licenses = searching(imgOriginalScene, loop)

        # only save 5 same license each time

        license[count + 1] = licenses
        nums = license[VERIF - 1]
        if (license[count] == license[count + 1]):
            license[count] = license[count + 1]
            count = count + 1
        elif (license[count] != license[count + 1]):
            coba = license[count + 1]
            count = 0
            license[count] = coba
        if count == (VERIF - 1):
            '''
            plateAlloc = "       "
            numstring = ""
            numbers = sum(c.isdigit() for c in nums)
            words   = sum(c.isalpha() for c in nums)

            for c in nums:
                numstring.append()
            '''

            global plat
            plat = "         "
            plat = list(plat)
            numstring = ""
            numstring = list(numstring)
            alphastring = ""
            alphastring = list(alphastring)
            numbers = sum(c.isdigit() for c in nums)
            words = sum(c.isalpha() for c in nums)

            for i in nums:
                #nums = np.array(nums)
                #nums = list(nums)
                if i.isalpha():
                    #nums[i] = np.array(nums[i])
                    alphastring.append(i)
                elif i.isdigit():
                    #nums[i] = np.array(nums[i])
                    numstring.append(i)

            print(nums)
            print(numstring)
            print(alphastring)

            #add numbers

            a = 2
            for b in numstring:
                plat[a] = b
                a += 1

            #add front letter(s)

            c = 0
            sumfront = sum(c.isalpha() for c in nums[0:2])
            if (sumfront == 1):
                for d in nums[0:1]:
                    plat[c] = d
                    c += 1
            elif (sumfront == 2):
                for d in nums[0:2]:
                    plat[c] = d
                    c += 1

            #add back letter(s)

            e = -3
            sumback = sum(e.isalpha() for e in nums[-3:])
            if (sumback == 1):
                for f in nums[-1:]:
                    plat[e] = f
                    e += 1
            elif (sumback == 2):
                for f in nums[-2:]:
                    plat[e] = f
                    e += 1
            elif (sumback == 3):
                for f in nums[-3:]:
                    plat[e] = f
                    e += 1

            plat = ''.join(plat)

            if (license[VERIF - 1] == ""):
                print("no characters were detected\n")
            else:
                #if number license same, not be saved

                if (numlicense == license[VERIF - 1]):
                    print("still = " + numlicense + "\n")
                elif (len(nums) <= 9 and nums[0] >= 'A' and nums[0] <= 'Z'
                      and numbers <= 4 and words <= 5):

                    numlicense = license[VERIF - 1]
                    #print("A new license plate read from image = " + license[VERIF-1] + "\n")
                    print("A new license plate read from image = " + plat +
                          "\n")
                    #cv2.imshow(license[VERIF-1], imgOriginalScene)
                    # cv2.imshow(plat, imgOriginalScene)
                    insertdata = data(numlicense)
                    if check(numlicense):
                        ts = time.time()
                        timestamp = datetime.datetime.fromtimestamp(
                            ts).strftime('%Y-%m-%d')
                        timestamp2 = datetime.datetime.fromtimestamp(
                            ts).strftime('%H:%M:%S')

                        #Ganti Path sesuai dengan laptop masing2 heheh
                        namefile = "/var/www/html/MonitoringDashboard/hasil_parksystem/" + license[
                            VERIF - 1] + timestamp + timestamp2 + ".png"
                        cv2.imwrite(namefile, imgOriginalScene)

                        #Hapus bagian ini untuk tidak menggunakan sensor dan mengirim mqtt
                        #broker="192.168.8.120"
                        #port=1883
                        #client1= paho.Client("control1")                           #create client object
                        #client1.connect(broker,port)                                 #establish connection
                        #ret= client1.publish("xiaomi/to/write",'{"cmd": "write",  "model": "plug",  "sid": "158d0002365abb",  "data": {"status": "on"}}')
                        # broker="192.168.1.151"
                        # port=1883
                        # client1= paho.Client("control1")                           #create client object
                        # client1.connect(broker,port)                                 #establish connection
                        # client1.publish("alpr/mqtt","0")
                        # os.system('spd-say "Welcome to Graha Sumber Prima Elektronik"')
            count = 0

        #determine plate regions

        # global plateRegion
        # plateRegion = ""
        # plateDic = {'B':"Jakarta", 'D':"Bandung", 'L':"Surabaya", 'A':"Banten", 'E':"Cirebon", 'G':"Pekalongan", 'H':"Semarang"}
        # for i, j in plateDic.items():
        #     if (plat[0] == i):
        #         plateRegion = j

        #and nums[0] >= 'A' and nums[0] <= 'Z' and nums[-1] >= 'A' and nums[-1] <= 'Z'
        '''
        global plateRegion
        if (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'B'):
            plateRegion = "Jakarta"
        elif (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'D'):
            plateRegion = "Bandung"
        elif (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'L'):
            plateRegion = "Surabaya"
        elif (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'E'):
            plateRegion = "Bandung"
        elif (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'L'):
            plateRegion = "Surabaya"
        elif (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'D'):
            plateRegion = "Bandung"
        elif (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'L'):
            plateRegion = "Surabaya"
        elif (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'D'):
            plateRegion = "Bandung"
        elif (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'L'):
            plateRegion = "Surabaya"
        elif (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'D'):
            plateRegion = "Bandung"
        elif (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'L'):
            plateRegion = "Surabaya"
        elif (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'D'):
            plateRegion = "Bandung"
        elif (len(nums) >= 5 and len(nums) <= 9 and nums[0] == 'L'):
            plateRegion = "Surabaya"

        else:
            plateRegion = "Who knows?"

        '''

        #print(license)
        # re-show scene image
        #imgOriginalScene = cv2.blur(imgOriginalScene,(12,12))
        cv2.putText(
            imgOriginalScene,
            "Press 's' to save frame to be 'save.png', for calibrating",
            (10, 30),
            cv2.FONT_HERSHEY_SIMPLEX,
            0.5, (255, 255, 255),
            1,
            bottomLeftOrigin=False)
        #drawRedRectangleAroundPlate(imgOriginalScene, imgOriginalScene)

        #cv2.rectangle(imgOriginalScene,((imgOriginalScene.shape[1]/2-230),(imgOriginalScene.shape[0]/2-80)),((imgOriginalScene.shape[1]/2+230),(imgOriginalScene.shape[0]/2+80)),SCALAR_GREEN,3)
        cv2.rectangle(imgOriginalScene,
                      ((int(imgOriginalScene.shape[1] / 2 - 230)),
                       (int(imgOriginalScene.shape[0] / 2 - 80))),
                      ((int(imgOriginalScene.shape[1] / 2 + 230)),
                       (int(imgOriginalScene.shape[0] / 2 + 80))),
                      SCALAR_GREEN, 3)

        cv2.imshow("imgOriginalScene", imgOriginalScene)
        #cv2.imshow("ori", frame)

        key = cv2.waitKey(5) & 0xFF
        if key == ord('s'):
            knn = str(knn)
            savefileimg = "calib_knn/img_" + knn + ".png"
            savefileThr = "calib_knn/Thr_" + knn + ".png"
            #cv2.saveimage("save.png", imgOriginalScene)
            cv2.imwrite(savefileimg, frame)
            cv2.imwrite(savefileThr, imgThresh)
            print("image save !")
            knn = int(knn)
            knn = knn + 1
        if key == 27:  # if the 'q' key is pressed, stop the loop
            break
            camera.release()  # cleanup the camera and close any open windows

    # For image only
    if (loop == False):
        imgOriginalScene = imutils.resize(imgOriginalScene, width=2000)
        cv2.imshow("original", imgOriginalScene)
        imgGrayscale, imgThresh = pp.preprocess(imgOriginalScene)
        cv2.imshow("threshold", imgThresh)
        #imgOriginalScene = imutils.transform (imgOriginalScene)
        imgOriginalScene, license = searching(imgOriginalScene, loop)
        #imgOriginalScene = imutils.detransform(imgOriginalScene)

        cv2.waitKey(0)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    return
Пример #10
0
def alpr(frame, sess, detection_graph):
    # add knn library for detect chars
    blnKNNTrainingSuccessful = DetectChars.loadKNNDataAndTrainKNN()             # attempt KNN training

    if blnKNNTrainingSuccessful == False:                                       # if KNN training was not successful
        print("\nerror: KNN traning was not successful\n")                      # show error message
        return
    count = 0
    # not very important, just iterating for license array haha
    license = []
    VER = np.zeros(VERIF)
    for x in VER:
        license.append("")
    numlicense = ""
    knn = 0
    loop=True

    # resize the frame and convert it to grayscale
    imgOriginalScene  = imutils.resize(frame)
    imgGrayscale, imgThresh = pp.preprocess(imgOriginalScene)
    #cv2.imshow("threshold", imgThresh)
    #imgOriginalScene = imutils.transform (imgOriginalScene)
    imgOriginalScene, licenses = searching(imgOriginalScene,loop)

    # only save 5 same license each time

    license[count+1] = licenses
    nums = license[VERIF-1]
    if (license[count] == license[count+1]):
        license[count]=license[count+1]
        count = count + 1
    elif (license[count] != license[count+1]):
        coba = license[count+1]
        count = 0
        license[count] = coba
    if count == (VERIF-1):

        '''
        plateAlloc = "       "
        numstring = ""
        numbers = sum(c.isdigit() for c in nums)
        words   = sum(c.isalpha() for c in nums)

        for c in nums:
            numstring.append()
        '''

        global plat
        plat = "         "
        plat = list(plat)
        numstring = ""
        numstring = list(numstring)
        alphastring = ""
        alphastring = list(alphastring)
        numbers = sum(c.isdigit() for c in nums)
        words   = sum(c.isalpha() for c in nums)

        for i in nums:
            #nums = np.array(nums)
            #nums = list(nums)
            if i.isalpha():
                #nums[i] = np.array(nums[i])
                alphastring.append(i)
            elif i.isdigit():
                #nums[i] = np.array(nums[i])
                numstring.append(i)

        print(nums)
        print(numstring)
        print(alphastring)

        #add numbers

        a = 2
        for b in numstring:
            plat[a] = b
            a+=1

        #add front letter(s)

        c = 0
        sumfront = sum(c.isalpha() for c in nums[0:2])
        if (sumfront == 1):
            for d in nums[0:1]:
                plat[c] = d
                c+=1
        elif (sumfront == 2):
            for d in nums[0:2]:
                plat[c] = d
                c+=1

        #add back letter(s)

        e = -3
        sumback = sum(e.isalpha() for e in nums[-3:])
        if (sumback == 1):
            for f in nums[-1:]:
                plat[e] = f
                e+=1
        elif (sumback == 2):
            for f in nums[-2:]:
                plat[e] = f
                e+=1
        elif (sumback == 3):
            for f in nums[-3:]:
                plat[e] = f
                e+=1

        plat = ''.join(plat)

        if (license[VERIF-1] == ""):
            print("no characters were detected\n")
        else:
            #if number license same, not be saved

            if (numlicense == license[VERIF-1]):
                print("still = " + numlicense + "\n")
            elif (len(nums) <= 9 and nums[0] >= 'A' and nums[0] <= 'Z' and numbers <= 4 and words <= 5):

                numlicense = license[VERIF-1]
                print("A new license plate read from image = " + plat + "\n")

                insertdata= data(numlicense)
                if check(numlicense):
                    ts = time.time()
                    timestamp = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d')
                    timestamp2 = datetime.datetime.fromtimestamp(ts).strftime('%H:%M:%S')

                    #Ganti Path sesuai dengan laptop masing2 heheh
                    namefile = "/var/www/html/MonitoringDashboard/hasil_parksystem/"+ license[VERIF-1] + timestamp + timestamp2 + ".png"
                    cv2.imwrite(namefile, imgOriginalScene)

                    #Hapus bagian ini untuk tidak menggunakan sensor dan mengirim mqtt
                    #broker="192.168.8.120"
                    #port=1883
                    #client1= paho.Client("control1")                           #create client object
                    #client1.connect(broker,port)                                 #establish connection
                    #ret= client1.publish("xiaomi/to/write",'{"cmd": "write",  "model": "plug",  "sid": "158d0002365abb",  "data": {"status": "on"}}')
                    # broker="192.168.1.151"
                    # port=1883
                    # client1= paho.Client("control1")                           #create client object
                    # client1.connect(broker,port)                                 #establish connection
                    # client1.publish("alpr/mqtt","0")
                    # os.system('spd-say "Welcome to Graha Sumber Prima Elektronik"')
        count = 0

    cv2.putText(imgOriginalScene,"Press 's' to save frame to be 'save.png', for calibrating",(10,30),cv2.FONT_HERSHEY_SIMPLEX, 0.5,(255,255,255),1,bottomLeftOrigin = False)

    cv2.rectangle(imgOriginalScene,((int(imgOriginalScene.shape[1]/2-230)),(int(imgOriginalScene.shape[0]/2-80))),((int(imgOriginalScene.shape[1]/2+230)),(int(imgOriginalScene.shape[0]/2+80))),SCALAR_GREEN,3)

    try:
        return dict(imgOriginalScenes=imgOriginalScene)
    except:
        return {}
Пример #11
0
#!/usr/bin/env python
# skeleton
# Developed by acidvegas in Python
# https://git.supernets.org/acidvegas/skeleton
# skeleton.py

import os
import sys

sys.dont_write_bytecode = True
os.chdir(sys.path[0] or '.')
sys.path += ('core', 'modules')

import debug

debug.setup_logger()
debug.info()
if not debug.check_version(3):
    debug.error_exit('Python 3 is required!')
if debug.check_privileges():
    debug.error_exit('Do not run as admin/root!')
debug.check_libs()
import database
database.check()
import irc
irc.Bot.connect()
Пример #12
0
def con():
    if db.check(user_value, pass_value):
        confirm = Label(root, text="welcome")
    else:
        confirm = Label(root, text="try again")
    confirm.pack()
Пример #13
0
def main():
    # argument for input video/image/calibration
    ap = argparse.ArgumentParser()
    ap.add_argument("-v", "--video", help="path to video file")

    ap.add_argument("-i", "--image", help="Path to the image")

    ap.add_argument("-c", "--calibration", help="image or video or camera")
    args = vars(ap.parse_args())

    if args.get("calibration", True):
        imgOriginalScene = cv2.imread(args["calibration"])
        if imgOriginalScene is None:
            print("Please check again the path of image or argument !")

        imgOriginalScene = imutils.resize(imgOriginalScene, width=640)
        cal.calibration(imgOriginalScene)
        return

    if args.get("video", True):
        camera = cv2.VideoCapture(args["video"])
        if camera is None:
            print("   Please check again the path of video or argument !")
        loop = True

    elif args.get("image", True):
        imgOriginalScene = cv2.imread("tes_plat_indo/B6703WJF.jpg")
        if imgOriginalScene is None:
            print("   Please check again the path of image or argument !")
        loop = False
    else:
        #  0 digunakan untuk camera laptop, 1 untuk camera external
        camera = cv2.VideoCapture(0)
        loop = True

    # add knn library for detect chars
    blnKNNTrainingSuccessful = DetectChars.loadKNNDataAndTrainKNN(
    )  # attempt KNN training

    if blnKNNTrainingSuccessful == False:  # if KNN training was not successful
        print(
            "\nerror: KNN traning was not successful\n")  # show error message
        return
    count = 0
    # not very important, just iterating for license array haha
    license = []
    VER = np.zeros(VERIF)
    for x in VER:
        license.append("")
    numlicense = ""
    susi = ""
    knn = 0

    # Looping for Video
    while (loop):
        # grab the current frame
        (grabbed, frame) = camera.read()
        #frame = camera.read()
        if args.get("video") and not grabbed:
            break
        # resize the frame and convert it to grayscale
        imgOriginalScene = imutils.resize(frame)
        imgGrayscale, imgThresh = pp.preprocess(imgOriginalScene)
        cv2.imshow("threshold", imgThresh)
        # imgOriginalScene = imutils.transform (imgOriginalScene)
        imgOriginalScene, licenses = searching(imgOriginalScene, loop)

        # only save 5 same license each time

        license[count + 1] = licenses
        nums = license[VERIF - 1]
        if (license[count] == license[count + 1]):
            license[count] = license[count + 1]
            count = count + 1
        elif (license[count] != license[count + 1]):
            coba = license[count + 1]
            count = 0
            license[count] = coba
        if count == (VERIF - 1):

            global plat
            plat = "         "
            plat = list(plat)
            numstring = ""
            numstring = list(numstring)
            alphastring = ""
            alphastring = list(alphastring)
            numbers = sum(c.isdigit() for c in nums)
            words = sum(c.isalpha() for c in nums)

            for i in nums:
                if i.isalpha():
                    alphastring.append(i)
                elif i.isdigit():
                    numstring.append(i)

            print(nums)
            print(numstring)
            print(alphastring)

            #add numbers

            a = 2
            for b in numstring:
                plat[a] = b
                a += 1

            #add front letter(s)

            c = 0
            sumfront = sum(c.isalpha() for c in nums[0:2])
            if (sumfront == 1):
                for d in nums[0:1]:
                    plat[c] = d
                    c += 1
            elif (sumfront == 2):
                for d in nums[0:2]:
                    plat[c] = d
                    c += 1

            #add back letter(s)

            e = -3
            sumback = sum(e.isalpha() for e in nums[-3:])
            if (sumback == 1):
                for f in nums[-1:]:
                    plat[e] = f
                    e += 1
            elif (sumback == 2):
                for f in nums[-2:]:
                    plat[e] = f
                    e += 1
            elif (sumback == 3):
                for f in nums[-3:]:
                    plat[e] = f
                    e += 1

            plat = ''.join(plat)

            if (license[VERIF - 1] == ""):
                print("no characters were detected\n")
            else:
                #if number license same, not be saved
                if (numlicense == license[VERIF - 1]):
                    print("still = " + numlicense + "\n")
                elif (len(nums) <= 9 and nums[0] >= 'A' and nums[0] <= 'Z'
                      and numbers <= 4 and words <= 5):

                    numlicense = license[VERIF - 1]
                    print(license[VERIF - 1])
                    print(numlicense)
                    print("A new license plate read from image = " + plat +
                          "\n")

                    insertdata = data(numlicense)
                    print(insertdata)
                    if check(numlicense):
                        ts = time.time()
                        timestamp = datetime.datetime.fromtimestamp(
                            ts).strftime('%Y-%m-%d')
                        timestamp2 = datetime.datetime.fromtimestamp(
                            ts).strftime('%H:%M:%S')

                        #Ganti Path sesuai dengan laptop masing2
                        namefile = "/Documents/" + license[
                            VERIF - 1] + timestamp + timestamp2 + ".png"
                        cv2.imwrite(namefile, imgOriginalScene)

            count = 0

        cv2.putText(
            imgOriginalScene,
            "Press 's' to save frame to be 'save.png', for calibrating",
            (10, 30),
            cv2.FONT_HERSHEY_SIMPLEX,
            0.5, (255, 255, 255),
            1,
            bottomLeftOrigin=False)
        #drawRedRectangleAroundPlate(imgOriginalScene, imgOriginalScene)

        #cv2.rectangle(imgOriginalScene,((imgOriginalScene.shape[1]/2-230),(imgOriginalScene.shape[0]/2-80)),((imgOriginalScene.shape[1]/2+230),(imgOriginalScene.shape[0]/2+80)),SCALAR_GREEN,3)
        cv2.rectangle(imgOriginalScene,
                      ((int(imgOriginalScene.shape[1] / 2 - 230)),
                       (int(imgOriginalScene.shape[0] / 2 - 80))),
                      ((int(imgOriginalScene.shape[1] / 2 + 230)),
                       (int(imgOriginalScene.shape[0] / 2 + 80))),
                      SCALAR_GREEN, 3)

        cv2.imshow("imgOriginalScene", imgOriginalScene)

        key = cv2.waitKey(5) & 0xFF
        if key == ord('s'):
            knn = str(knn)
            savefileimg = "calib_knn/img_" + knn + ".png"
            savefileThr = "calib_knn/Thr_" + knn + ".png"
            #cv2.saveimage("save.png", imgOriginalScene)
            cv2.imwrite(savefileimg, frame)
            cv2.imwrite(savefileThr, imgThresh)
            print("image save !")
            knn = int(knn)
            knn = knn + 1
        if key == 27:  # if the 'q' key is pressed, stop the loop
            break
            camera.release()  # cleanup the camera and close any open windows

    # For image only
    if (loop == False):
        imgOriginalScene = imutils.resize(imgOriginalScene, width=2000)
        cv2.imshow("original", imgOriginalScene)
        imgGrayscale, imgThresh = pp.preprocess(imgOriginalScene)
        cv2.imshow("threshold", imgThresh)
        #imgOriginalScene = imutils.transform (imgOriginalScene)
        imgOriginalScene, license = searching(imgOriginalScene, loop)
        #imgOriginalScene = imutils.detransform(imgOriginalScene)

        cv2.waitKey(0)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    return
Пример #14
0
from database import db
from database import check
from commands import memory, cpu, disk, sshd
import time

db.create_all()
i = 1
while True:

    if (i > 100):
        delete = check.query.first()
        db.session.delete(delete)
        db.session.commit()

    ch = check(memory(), cpu(), disk(), sshd())
    db.session.add(ch)
    db.session.commit()
    i = i + 1

    time.sleep(60)