-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchapter6.py
62 lines (55 loc) · 2.24 KB
/
chapter6.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
import cv2
import numpy as np
def stack_images(scale, img_array):
rows = len(img_array)
cols = len(img_array[0])
rowsAvailable = isinstance(img_array[0], list)
width = img_array[0][0].shape[1]
height = img_array[0][0].shape[0]
if rowsAvailable:
for x in range(0, rows):
for y in range(0, cols):
if img_array[x][y].shape[:2] == img_array[0][0].shape [:2]:
img_array[x][y] = cv2.resize(img_array[x][y], (0, 0), None, scale, scale)
else:
img_array[x][y] = cv2.resize(
img_array[x][y],
(img_array[0][0].shape[1], img_array[0][0].shape[0]),
None, scale, scale
)
if len(img_array[x][y].shape) == 2: img_array[x][y]= cv2.cvtColor(img_array[x][y], cv2.COLOR_GRAY2BGR)
imageBlank = np.zeros((height, width, 3), np.uint8)
hor = [imageBlank]*rows
hor_con = [imageBlank]*rows
for x in range(0, rows):
hor[x] = np.hstack(img_array[x])
ver = np.vstack(hor)
else:
for x in range(0, rows):
if img_array[x].shape[:2] == img_array[0].shape[:2]:
img_array[x] = cv2.resize(img_array[x], (0, 0), None, scale, scale)
else:
img_array[x] = cv2.resize(
img_array[x],
(img_array[0].shape[1], img_array[0].shape[0]),
None, scale, scale
)
if len(img_array[x].shape) == 2: img_array[x] = cv2.cvtColor(img_array[x], cv2.COLOR_GRAY2BGR)
hor = np.hstack(img_array)
ver = hor
return ver
img = cv2.imread("Resources/lena.png")
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
imgStack = stack_images(0.5, (
[img, imgGray, img],
[img, img, img]
))
cv2.imshow("ImageStack", imgStack)
# The downside of this method is that, it requires the number of channels in all the images to be equal,
# otherwise this method won't work. Also, we can't resize an image using this method, so the images might go out of
# the frame.
# imgHor = np.hstack((img, img))
# imgVer = np.vstack((img, img))
# cv2.imshow("Horizontal", imgHor)
# cv2.imshow("Vertical", imgVer)
cv2.waitKey(0)