Adjusted template extraction for folder parsing
This commit is contained in:
parent
a07f8cc5c6
commit
394d0ef941
@ -3,11 +3,14 @@ Script to extract 10cm x 10cm images from the template
|
|||||||
Accounts for (minor) rotation.
|
Accounts for (minor) rotation.
|
||||||
|
|
||||||
command:
|
command:
|
||||||
python template.py input_directory
|
python template.py input_folder output_folder
|
||||||
|
|
||||||
|
volgorde maakt uit! heb niet die fancy library gebruikt
|
||||||
|
|
||||||
known bugs:
|
known bugs:
|
||||||
|
- plaatjes worden soms de verkeerde kant op gedraaid, ze staan wel recht
|
||||||
|
maar 90 graden gedraaid
|
||||||
- plaatjes zijn niet persé exact 10x10 cm als perspectief niet precies goed is
|
- plaatjes zijn niet persé exact 10x10 cm als perspectief niet precies goed is
|
||||||
- gekke crash bij herextractie van datapunten, zie todo
|
|
||||||
|
|
||||||
Auteurs:
|
Auteurs:
|
||||||
Tom Selier
|
Tom Selier
|
||||||
@ -21,7 +24,7 @@ import os
|
|||||||
## Parameters ##
|
## Parameters ##
|
||||||
|
|
||||||
# [%] Schaal output in percentages
|
# [%] Schaal output in percentages
|
||||||
SCHAAL = 100
|
SCHAAL = 25
|
||||||
|
|
||||||
|
|
||||||
# [mm] 120 op calib a4, 180 op template
|
# [mm] 120 op calib a4, 180 op template
|
||||||
@ -79,44 +82,30 @@ def findMin(array, index):
|
|||||||
min_val = element[index]
|
min_val = element[index]
|
||||||
return min_val
|
return min_val
|
||||||
|
|
||||||
input_directory = sys.argv[1]
|
input_folder = sys.argv[1]
|
||||||
|
output_folder = sys.argv[2]
|
||||||
|
|
||||||
if(not os.path.isdir(input_directory)):
|
if(not os.path.isdir(input_folder)):
|
||||||
print(input_directory)
|
print("Input folder not found")
|
||||||
print("Input directory not found")
|
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
|
if(not os.path.isdir(output_folder)):
|
||||||
|
print("Output folder not found")
|
||||||
|
exit()
|
||||||
|
|
||||||
|
|
||||||
### ARUCO PARAMETERS ###
|
### ARUCO PARAMETERS ###
|
||||||
detector_params = cv2.aruco.DetectorParameters()
|
detector_params = cv2.aruco.DetectorParameters()
|
||||||
detector_params.adaptiveThreshWinSizeMax = 150 # Takes longer, but better chance of finding markers
|
|
||||||
dictionary = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_ARUCO_ORIGINAL)
|
dictionary = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_ARUCO_ORIGINAL)
|
||||||
detector = cv2.aruco.ArucoDetector(dictionary, detector_params)
|
detector = cv2.aruco.ArucoDetector(dictionary, detector_params)
|
||||||
|
|
||||||
### IMAGE CONVERSIE ###
|
### IMAGE CONVERSIE ###
|
||||||
for folder in os.listdir(input_directory):
|
for file in os.listdir(input_folder):
|
||||||
if folder.endswith('.py'):
|
|
||||||
print("Skipping", folder)
|
|
||||||
continue
|
|
||||||
|
|
||||||
if folder.endswith('.jpg'):
|
|
||||||
continue
|
|
||||||
|
|
||||||
if SAVE:
|
|
||||||
path = os.path.join(input_directory, folder)
|
|
||||||
if (path).endswith("_out"):
|
|
||||||
continue
|
|
||||||
out_folder = path + "_out"
|
|
||||||
if (os.path.exists(out_folder) == False):
|
|
||||||
if VERBOSE:
|
|
||||||
print("Created folder: " + out_folder)
|
|
||||||
os.mkdir(out_folder)
|
|
||||||
|
|
||||||
for file in os.listdir(os.path.join(input_directory, folder)):
|
|
||||||
## Laad plaatjes in kleur ##
|
## Laad plaatjes in kleur ##
|
||||||
filename = input_directory + '/' + folder + '/' + file
|
filename = input_folder + '/' + file
|
||||||
|
out_filename = output_folder + '/' + file
|
||||||
img = cv2.imread(filename, 1)
|
img = cv2.imread(filename, 1)
|
||||||
|
|
||||||
assert img is not None, "Image path is wrong " + filename
|
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
print(file)
|
print(file)
|
||||||
|
|
||||||
@ -124,10 +113,7 @@ for folder in os.listdir(input_directory):
|
|||||||
(h, w) = img.shape[:2]
|
(h, w) = img.shape[:2]
|
||||||
x_scale = int(w/100*SCHAAL)
|
x_scale = int(w/100*SCHAAL)
|
||||||
y_scale = int(h/100*SCHAAL)
|
y_scale = int(h/100*SCHAAL)
|
||||||
if SCHAAL != 100:
|
|
||||||
small_img = cv2.resize(img, (x_scale, y_scale))
|
small_img = cv2.resize(img, (x_scale, y_scale))
|
||||||
else:
|
|
||||||
small_img = img
|
|
||||||
(h_small, w_small) = small_img.shape[:2]
|
(h_small, w_small) = small_img.shape[:2]
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
print("Van %dx%dpx naar %dx%dpx geschaald"%(h,w,h_small,w_small))
|
print("Van %dx%dpx naar %dx%dpx geschaald"%(h,w,h_small,w_small))
|
||||||
@ -138,16 +124,7 @@ for folder in os.listdir(input_directory):
|
|||||||
small_img,
|
small_img,
|
||||||
corners,
|
corners,
|
||||||
ids)
|
ids)
|
||||||
|
assert len(ids) == 4, "Not enough markers found in " + str(file)
|
||||||
if ids is None:
|
|
||||||
print("Skipping: ", filename)
|
|
||||||
print("=============================================")
|
|
||||||
continue
|
|
||||||
if len(ids) != 4:
|
|
||||||
print("Skipping: ", filename)
|
|
||||||
print("=============================================")
|
|
||||||
continue
|
|
||||||
|
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
print("%d markers gedetecteerd" %len(ids))
|
print("%d markers gedetecteerd" %len(ids))
|
||||||
|
|
||||||
@ -161,7 +138,7 @@ for folder in os.listdir(input_directory):
|
|||||||
cv2.circle(
|
cv2.circle(
|
||||||
new_image,
|
new_image,
|
||||||
(x[i], y[i]),
|
(x[i], y[i]),
|
||||||
radius=5,
|
radius=3,
|
||||||
color=(0, 254, 254),
|
color=(0, 254, 254),
|
||||||
thickness=-1)
|
thickness=-1)
|
||||||
i += 1
|
i += 1
|
||||||
@ -174,7 +151,7 @@ for folder in os.listdir(input_directory):
|
|||||||
|
|
||||||
## Draai de plaatjes recht ##
|
## Draai de plaatjes recht ##
|
||||||
x0 = x[np.where(ids == 0)[0][0]]
|
x0 = x[np.where(ids == 0)[0][0]]
|
||||||
x1 = x[np.where(ids == 1)[0][0]] # TODO: Fix whatevers happening here
|
x1 = x[np.where(ids == 1)[0][0]]
|
||||||
x_dif = x0-x1
|
x_dif = x0-x1
|
||||||
|
|
||||||
y0 = y[np.where(ids == 0)[0][0]]
|
y0 = y[np.where(ids == 0)[0][0]]
|
||||||
@ -234,9 +211,7 @@ for folder in os.listdir(input_directory):
|
|||||||
cv2.imshow('window', warp_img)
|
cv2.imshow('window', warp_img)
|
||||||
cv2.imshow('cropped', crop_img)
|
cv2.imshow('cropped', crop_img)
|
||||||
if SAVE:
|
if SAVE:
|
||||||
out_path = out_folder + "/" + file
|
cv2.imwrite(out_filename, crop_img)
|
||||||
print("Saving to:", out_path)
|
|
||||||
cv2.imwrite(out_path, crop_img)
|
|
||||||
if PAUZE or PLAATJES:
|
if PAUZE or PLAATJES:
|
||||||
cv2.waitKey(0)
|
cv2.waitKey(0)
|
||||||
if VERBOSE:
|
if VERBOSE:
|
||||||
|
Loading…
Reference in New Issue
Block a user