78 lines
1.3 KiB
Python
78 lines
1.3 KiB
Python
from PIL import Image, ImageFilter
|
|
|
|
FILENAME = "circle.png"
|
|
|
|
name, ext = FILENAME.split('.')
|
|
|
|
image = Image.open(FILENAME)
|
|
|
|
|
|
|
|
l_image = image.convert("L")
|
|
|
|
l_image.save(name + '-L.' + ext)
|
|
|
|
edges_image = l_image.filter(ImageFilter.FIND_EDGES)
|
|
|
|
edges_image.save(name + "-edges." + ext)
|
|
|
|
|
|
# Get Edge Directions
|
|
rgb_edge = edges_image.convert('RGB')
|
|
w, h = rgb_edge.size
|
|
|
|
rgb_edge.save("rgb.png")
|
|
|
|
CHAR_PIXEL_SIZE = 8
|
|
|
|
edge_pixels = []
|
|
y_count = 0
|
|
for pixel_y in range(0, h):
|
|
|
|
x_count = 0
|
|
for pixel_x in range(0, w):
|
|
rgb = rgb_edge.getpixel((pixel_x, pixel_y))
|
|
|
|
print(rgb)
|
|
|
|
if rgb != (0, 0, 0):
|
|
edge_pixels.append((pixel_x, pixel_y))
|
|
|
|
x_count += 1
|
|
|
|
if x_count >= CHAR_PIXEL_SIZE:
|
|
break
|
|
|
|
y_count += 1
|
|
if y_count >= CHAR_PIXEL_SIZE:
|
|
x_count = 0
|
|
y_count = 0
|
|
|
|
def calculate_slope(points: list[tuple]) -> int:
|
|
count: int = len(points)
|
|
|
|
sumX = 0
|
|
sumY = 0
|
|
sumX2 = 0
|
|
sumXY = 0
|
|
for p in points:
|
|
x = p[0]
|
|
y = p[1]
|
|
|
|
sumX += x
|
|
sumY += y
|
|
sumX2 += x ** 2
|
|
sumXY += x * y
|
|
|
|
meanX = sumX / count
|
|
meanY = sumY / count
|
|
|
|
if (sumX2 - sumX * meanX) == 0:
|
|
return 0
|
|
|
|
return (sumXY - sumX * meanY) / (sumX2 - sumX * meanX)
|
|
|
|
|
|
|
|
|