|
@@ -0,0 +1,58 @@ |
|
|
|
|
|
import os |
|
|
|
|
|
import hyperlpr.detect as hyperDetect |
|
|
|
|
|
import hyperlpr.config as hyperConfig |
|
|
|
|
|
import cv2 |
|
|
|
|
|
import argparse |
|
|
|
|
|
import sys |
|
|
|
|
|
|
|
|
|
|
|
parser = argparse.ArgumentParser() |
|
|
|
|
|
|
|
|
|
|
|
debugInfo = hyperConfig.configuration["global"]["debug"] |
|
|
|
|
|
testPath = hyperConfig.configuration["detectTest"]["detectPath"] |
|
|
|
|
|
outPath = hyperConfig.configuration["detectTest"]["outputPath"] |
|
|
|
|
|
|
|
|
|
|
|
def drawBoundingBox(originImage,rect): |
|
|
|
|
|
cv2.rectangle(originImage, (int(rect[0]), int(rect[1])), (int(rect[0] + rect[2]), int(rect[1] + rect[3])), (0, 0, 255), 2, |
|
|
|
|
|
cv2.LINE_AA) |
|
|
|
|
|
return originImage |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#detect Plate in image batch |
|
|
|
|
|
def detectPlateBatchTest(filepath): |
|
|
|
|
|
for filename in os.listdir(filepath): |
|
|
|
|
|
if filename.endswith(".jpg") or filename.endswith(".png"): |
|
|
|
|
|
fileFullPath = os.path.join(filepath,filename) |
|
|
|
|
|
image = cv2.imread(fileFullPath) |
|
|
|
|
|
image_c = image.copy() |
|
|
|
|
|
Plates = hyperDetect.detectPlateRough(image_c, image_c.shape[0], top_bottom_padding_rate=0.1) |
|
|
|
|
|
pathName = filename.split('.')[0] |
|
|
|
|
|
if debugInfo: |
|
|
|
|
|
if len(Plates) != 0: |
|
|
|
|
|
if os.path.exists(os.path.join(outPath,pathName)) == False: |
|
|
|
|
|
os.mkdir(os.path.join(outPath,pathName)) |
|
|
|
|
|
for i,plate in enumerate(Plates): |
|
|
|
|
|
rect = plate[1] |
|
|
|
|
|
region = plate[2] |
|
|
|
|
|
if debugInfo: |
|
|
|
|
|
cv2.imwrite(os.path.join(outPath,pathName,"region_"+str(i)+"_"+pathName+".png"),region) |
|
|
|
|
|
drawBoundingBox(image_c,rect) |
|
|
|
|
|
if debugInfo: |
|
|
|
|
|
cv2.imwrite(os.path.join(outPath,pathName,"out_"+pathName+".png"),image_c) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main(args): |
|
|
|
|
|
if args.type == 'batch': |
|
|
|
|
|
detectPlateBatchTest(testPath) |
|
|
|
|
|
else: |
|
|
|
|
|
print "type: "+args.type+" not found!\n" |
|
|
|
|
|
print parser.print_help() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def parse_arguments(argv): |
|
|
|
|
|
parser.add_argument('--type',type=str,help='detect Plate type{batch},default is batch',default='batch') |
|
|
|
|
|
return parser.parse_args(argv) |
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
|
|
main(parse_arguments(sys.argv[1:])) |
|
|
|
|
|
|
|
|
|
|
|
#detectPlateBatchTest(testPath) |