#' Run openAPLR
#'
#' Runs FEAT images though the openALPR system and outputs a respose ready to be parsed through verification steps
#'
#' @param secret_key openALPR API secret key
#' @param country openALPR plate country code, default "eu"
#' @param image_dir directory where image files are stored
#'
#' @author W S Drysdale
#' @export
run_openALPR = function(secret_key,country = "eu",image_dir){
print("working directory is:")
print(getwd())
workingdir_prompt = function(){
i = readline(prompt = "is correct? sub folders will be created here [y/n]: ")
if (i == "y" | i == "n"){
if (i == "y")
print("running ALPR")
if(i == "n")
stop("please navigate to correct directory")
}else
workingdir_prompt()
}
workingdir_prompt()
image_files = list.files(image_dir)
#crop images to remove red text
if(!dir.exists("img_cropped"))
dir.create(("img_cropped"))
for (i in 1:length(image_files)){
image = readImage(paste(image_dir,image_files[i],sep = ""))
image = image[,30:220,]
writeImage(image,paste("img_cropped/",image_files[i],sep = ""))
}
#API Request Loop - parse 1
responses1 = list()
for (i in 1:length(image_files)){
image = paste("img_cropped/",image_files[i],sep = "")
temp_content = openALPR_request(secret_key,country,image)
responses1[[i]] = temp_content
}
rm(temp_content)
result_pass1 = parse_openALPR_responses(responses1,image_files)
if(!dir.exists("img_corr"))
dir.create("img_corr")
result_pass1$confidence[is.na(result_pass1$confidence)] = 0
low_confidence = result_pass1[(result_pass1$confidence < 90 | nchar(result_pass1$plate) < 7),]
low_conf_image = low_confidence$image
#Reprocess low confidence images
for (i in 1:length(low_conf_image)){
image = readImage(paste("img_cropped/",low_conf_image[i],sep = ""))
image = (image * 4) - 0.2
writeImage(image,paste("img_corr/",low_conf_image[i],sep = ""))
}
#API Request Loop - parse 2
responses2 = list()
for (i in 1:length(low_conf_image)){
image = paste("img_corr/",low_conf_image[i],sep = "")
temp_content = openALPR_request(secret_key,country,image)
responses2[[i]] = temp_content
}
rm(temp_content)
result_pass2 = parse_openALPR_responses(responses2,low_conf_image)
if(!dir.exists("img_corr2"))
dir.create("img_corr2")
result_pass2$confidence[is.na(result_pass2$confidence)] = 0
low_confidence2 = result_pass2[(result_pass2$confidence < 90 | nchar(result_pass2$plate) < 7),]
low_conf_image2 = low_confidence2$image
#Reprocess low confidence images2
for (i in 1:length(low_conf_image2)){
image = readImage(paste("img_cropped/",low_conf_image2[i],sep = ""))
image = (image *2)
writeImage(image,paste("img_corr2/",low_conf_image2[i],sep = ""))
}
#API Request Loop - parse 3
responses3 = list()
for (i in 1:length(low_conf_image2)){
image = paste("img_corr2/",low_conf_image2[i],sep = "")
temp_content = openALPR_request(secret_key,country,image)
responses3[[i]] = temp_content
}
rm(temp_content)
result_pass3 = parse_openALPR_responses(responses3,low_conf_image2)
pass3 = image_files[image_files %in% low_conf_image2]
pass2 = image_files[(image_files %in% low_conf_image) & !(image_files %in% low_conf_image2)]
pass23 = c(pass2,pass3)
pass1 = image_files[!(image_files %in% pass23)]
unq_rp3 = result_pass3[result_pass3$image %in% pass3,]
if(nrow(unq_rp3) != 0)
unq_rp3$pass = 3
unq_rp2 = result_pass2[result_pass2$image %in% pass2,]
if(nrow(unq_rp2) != 0)
unq_rp2$pass = 2
unq_rp1 = result_pass1[result_pass1$image %in% pass1,]
if(nrow(unq_rp1) != 0)
unq_rp1$pass = 1
results = rbind(unq_rp1,unq_rp2,unq_rp3)
if(!dir.exists("results"))
dir.create("results")
write.csv(results,"results/open_ALPR_results.csv",row.names = F)
#return
results
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.