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.