-
Notifications
You must be signed in to change notification settings - Fork 0
/
render.py
68 lines (52 loc) · 2.28 KB
/
render.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
import cv2
import random
import numpy as np
import investigate_emoji
from investigate_image import get_image
def greyscale_to_bw():
img = cv2.imread("C:/Users/Jeremy/Documents/GitHub/collab_pic/example_pic/dxV2T1v_g.jpg", cv2.IMREAD_GRAYSCALE)
blur = cv2.GaussianBlur(img, (5, 5), 0)
(thresh, im_bw) = cv2.threshold(img, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
(thresh, im_bw_blur) = cv2.threshold(blur, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
cv2.imshow("bnw", im_bw)
cv2.imwrite("bw.jpg", im_bw)
cv2.imshow("bw_blur", im_bw_blur)
cv2.imwrite("bw_blur.jpg", im_bw_blur)
def image_resize(image, width = None, height = None, inter = cv2.INTER_AREA):
# https://stackoverflow.com/questions/44650888/resize-an-image-without-distortion-opencv
# initialize the dimensions of the image to be resized and
# grab the image size
dim = None
(h, w) = image.shape[:2]
# if both the width and height are None, then return the
# original image
if width is None and height is None:
return image
# check to see if the width is None
if width is None:
# calculate the ratio of the height and construct the
# dimensions
r = height / float(h)
dim = (int(w * r), height)
# otherwise, the height is None
else:
# calculate the ratio of the width and construct the
# dimensions
r = width / float(w)
dim = (width, int(h * r))
# resize the image
resized = cv2.resize(image, dim, interpolation = inter)
# return the resized image
return resized
def generate_final_image(final, properties, target=None, subsample=1):
new = np.zeros((properties["height"], properties["width"] ,3), np.uint8)
for i in range(0, len(final)):
print("\rRendering image sector {} out of {} ({}%)...".format(i+1, len(final), int(100*i/len(final))), end="")
curr_emoji, curr_properties = get_image(final[i].image)
#print(curr_emoji_path)
#curr_emoji = cv2.imread(curr_emoji_path)
if target is not None and target != curr_properties:
curr_emoji = image_resize(curr_emoji, width=target, height=target)
# start replace
new[final[i].start_y:final[i].end_y, final[i].start_x:final[i].end_x] = curr_emoji
return new