Files
Intelligent-Elderly-Care/Class/detection/generate_projector_picture.py
2020-07-06 17:07:02 +08:00

95 lines
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import cv2
import numpy as np
from PIL import Image
from GFmatrix import GF
# 生成一个菱形的填色像素坐标
def set_matrix(dimension):
color = []
for i in range(0, dimension):
color.append([])
for j in range(0, dimension):
color[i].append(0)
demission_temp = dimension - 1
for i in range(0, dimension):
for j in range(0, dimension):
if i < demission_temp // 2:
if j >= demission_temp // 2 - i and j <= demission_temp // 2 + i or j == demission_temp // 2:
color[i][j] = 1
elif i > demission_temp // 2:
temp = (demission_temp) - i
if j >= demission_temp // 2 - temp and j <= demission_temp // 2 + temp or j == demission_temp // 2:
color[i][j] = 1
else:
color[i][j] = 1
return color
if __name__ == '__main__':
# data = fileload()
data = GF(1, 1, 1, 1, 1, 1)
dimension = int(input("Please enter the length of the diagonal of the rhombus:"))
color = set_matrix(dimension)
x = 912
y = 1140
bgcolor = 0xffffff # 投影图案是白色背景
c = Image.new("RGB", (x, y), bgcolor)
start_row = end_row = 0
start_column = end_column = 0
if 63 * dimension > 912:
start_row = 0
end_row = 912
else:
start_row = (912 - (63 * dimension)) // 2
end_row = start_row + 63 * dimension
if 65 * dimension > 1140:
start_column = 0
end_column = 1140
else:
start_column = (1140 - (65 * dimension)) // 2
end_column = start_column + 65 * dimension
# 以13*13的菱形为例暂时没有修改菱形超过图片大小的情况
i = start_row
while i < end_row:
if i > end_row - dimension or i == end_row - dimension:
break
else:
t = (i - start_row) // dimension
j = start_column
while j < end_column:
if j > end_column - dimension or j == end_column - dimension:
break
else:
q = (j - start_column) // dimension
if data[q][t] == 0:
for k in range(0, dimension):
for m in range(0, dimension):
if color[k][m] == 1:
c.putpixel([i + k, j + m], (0, 0, 255)) # 蓝色
elif data[q][t] == 1:
for k in range(0, dimension):
for m in range(0, dimension):
if color[k][m] == 1:
c.putpixel([i + k, j + m], (255, 0, 0)) # 红色
elif data[q][t] == 2:
for k in range(0, dimension):
for m in range(0, dimension):
if color[k][m] == 1:
c.putpixel([i + k, j + m], (0, 255, 0)) # 绿色
else:
for k in range(0, dimension):
for m in range(0, dimension):
if color[k][m] == 1:
c.putpixel([i + k, j + m], (0, 0, 0))
j = j + dimension
i = i + dimension
c.show()
c.save("projector.png")