简体   繁体   中英

cv2.imwrite() not writing the timestamp into frame

I have a successfull running image recognition script. All I want is that on successful image recognition it saves the captured frame with the current timestamp into the file name. here is my code

#!C:\Users\Gurminders\AppData\Local\Programs\Python\Python35-32\python.exe
print("Content-type: text/html\n\n");
# Import OpenCV2 for image processing
import cv2
import mysql.connector
import numpy as np
import os
import sys
import datetime
import time
import cgitb
cgitb.enable()
# put the database inputs here
cnx = mysql.connector.connect(user='root', password='', host='localhost', 
database='image')
cursor = cnx.cursor()
def assure_path_exists(path):
dir = os.path.dirname(path)
if not os.path.exists(dir):
    os.makedirs(dir)

# Create Local Binary Patterns Histograms for face recognization
recognizer = cv2.face.LBPHFaceRecognizer_create()

assure_path_exists("trainer/")

# Load the trained mode
recognizer.read('trainer/trainer.yml')

# Load prebuilt model for Frontal Face
cascadePath = "haarcascade_frontalface_default.xml"
# Create classifier from prebuilt model
faceCascade = cv2.CascadeClassifier(cascadePath);

# Set the font style
font = cv2.FONT_HERSHEY_SIMPLEX
# Initialize and start the video frame capture
cam = cv2.VideoCapture(0)
check = "1" #sys.argv[1]
int_check = int(check)
print(int_check + 5)
ts = time.time()
st = datetime.datetime.fromtimestamp(ts).strftime('%d-%m-%Y %H:%M:%S')
# Loop
while True:
# Read the video frame
ret, im =cam.read()

# Convert the captured frame into grayscale
gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)

# Get all face from the video frame
faces = faceCascade.detectMultiScale(gray, 1.2,5)

# For each face in faces
for(x,y,w,h) in faces:

    # Create rectangle around the face
    cv2.rectangle(im, (x-20,y-20), (x+w+20,y+h+20), (0,255,0), 4)

    # Recognize the face belongs to which ID
    Id, confidence = recognizer.predict(gray[y:y+h,x:x+w])


    # Check the ID if exist 
    if(Id == int_check):
        confi = round(100 - confidence,2)

        if(confi >20):

            # create table face with two variables id and verified
            cursor.execute ("UPDATE face SET verified=%s WHERE id='%s' " % (confi, Id))


        elif(confi <20):
            cursor.execute ("UPDATE face SET verified='false' WHERE id='%s' " % (Id))






    # Put text describe who is in the picture
    cv2.rectangle(im, (x-22,y-90), (x+w+22, y-22), (0,255,0), -1)
    cv2.putText(im, str(Id), (x,y-40), font, 1, (255,255,255), 3)

# Display the video frame with the bounded rectangle
cv2.imshow('Live Camera Capturing',im)
file_name = str(Id) + " " + str(st)
print(file_name)
cv2.imwrite("face -" + str(file_name) + " frame.jpg", im)

# wait time in ms for camera quit
if cv2.waitKey(1000):
    break


cnx.close()

# Stop the camera
cam.release()

# Close all windows
cv2.destroyAllWindows()

The variable file_name is storing the user id and current time stamp but when i try to use it in cv2.imwrite() so that it can write the name of the frame it does not do anything. What is wrong here?

the solution was to remove colon sign from the timestamp

st = datetime.datetime.fromtimestamp(ts).strftime('%d-%m-%Y_%H-%M-%S')

this solved the problem

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM