-
Notifications
You must be signed in to change notification settings - Fork 0
/
case_concatenator.py
113 lines (77 loc) · 3.25 KB
/
case_concatenator.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import cv2
import numpy as np
import os
INPUT_AND_OUTPUT_DIR = 'output'
""" Code from
https://note.nkmk.me/en/python-opencv-hconcat-vconcat-np-tile/
I changed 'min' to max, that's all.
"""
def vconcat_resize_min(im_list, interpolation=cv2.INTER_CUBIC):
w_min = max(im.shape[1] for im in im_list)
im_list_resize = [cv2.resize(im, (w_min, int(im.shape[0] * w_min / im.shape[1])), interpolation=interpolation)
for im in im_list]
return cv2.vconcat(im_list_resize)
def hconcat_resize_min(im_list, interpolation=cv2.INTER_CUBIC):
h_min = max(im.shape[0] for im in im_list)
im_list_resize = [cv2.resize(im, (int(im.shape[1] * h_min / im.shape[0]), h_min), interpolation=interpolation)
for im in im_list]
return cv2.hconcat(im_list_resize)
def concat_tile(im_list_2d):
return cv2.vconcat([cv2.hconcat(im_list_h) for im_list_h in im_list_2d])
# something wrong with this one, makes everything gray...
def concat_tile_resize(im_list_2d, interpolation=cv2.INTER_CUBIC):
im_list_v = [hconcat_resize_min(im_list_h, interpolation=cv2.INTER_CUBIC) for im_list_h in im_list_2d]
return vconcat_resize_min(im_list_v, interpolation=cv2.INTER_CUBIC)
images = []
for filename in os.listdir(INPUT_AND_OUTPUT_DIR):
# dont wanna use the earlier output in the new one
# cba to do this with an or, or a list atm.
if filename in ["big long boi.png",
f'big long boi small.png',
f'big long boi smaller.png',
f'big long boi smallest.png']:
print(f'skipping {filename} because thats an outputfile-name..')
continue
if filename.endswith(".png"):
images.append(cv2.imread(f'{INPUT_AND_OUTPUT_DIR}//{filename}'))
image_of_concatenated_images = vconcat_resize_min(images)
"""
FIXED but still a todo
okay since nothing works...
- find largest image
- paste every smaller image onto a canvas filled with a background
- then concatenate vertically
HTML/HEX code: #151615
RGB code: rgb(21, 22, 21)
"""
status = cv2.imwrite(f'{INPUT_AND_OUTPUT_DIR}//big long boi.png', image_of_concatenated_images)
if status:
print('success!')
else:
print('no succes!! :(')
print('resizing... 50%')
resize1 = cv2.resize(image_of_concatenated_images, (0,0), 0.5, 0.5, cv2.INTER_AREA)
status = cv2.imwrite(f'{INPUT_AND_OUTPUT_DIR}//big long boi small.png', image_of_concatenated_images)
if status:
print('success!')
else:
print('no succes!! :(')
print('resizing...25% ')
"""
issue OpenCV resize fails on large image with “error: (-215) ssize.area() > 0 in function cv::resize”
https://stackoverflow.com/questions/31996367/opencv-resize-fails-on-large-image-with-error-215-ssize-area-0-in-funct
resize1 = cv2.resize(image_of_concatenated_images, (0,0), 0.25, 0.25)
status = cv2.imwrite(f'{INPUT_AND_OUTPUT_DIR}//big long boi smaller.png', image_of_concatenated_images)
if status:
print('success!')
else:
print('no succes!! :(')
print('resizing...10%')
resize1 = cv2.resize(image_of_concatenated_images, (0,0), 0.1, 0.1)
status = cv2.imwrite(f'{INPUT_AND_OUTPUT_DIR}//big long boi smallest.png', image_of_concatenated_images)
if status:
print('success!')
else:
print('no succes!! :(')
"""
print('erm nvm i changed my mind')