Para esta entrega de laboratorio se nos pidió
obtener Convex Hull de una imagen.
Para la realización de esto fue necesario usar el algoritmo
utilizado en la Tarea 2:
Además se necesitaban 2 imágenes con fondo
negro y con alguna figura con líneas blancas.
Utilice el algoritmo de Jarvis march el cual se
inicia en algún punto extremo del contorno, y en cada paso se prueba cada punto
de los puntos y se encuentra cual hace la vuelta más larga hacia la derecha.
Código:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
TURN_LEFT, TURN_RIGHT, TURN_NONE = (1, -1, 0) | |
def turn(x, y, z): | |
return cmp((y[0] - x[0])*(z[1] - x[1]) - (z[0] - x[0])*(y[1] - x[1]), 0) | |
def convex(cor): | |
convex_hull = [min(cor)] | |
ancho, largo = im.size | |
pix = im.load() | |
for i in range(len(cor)): | |
q = cor[0] | |
for j in range(len(cor)): | |
t = turn(cor[j], convex[i], q) | |
if q == convex[i] or t == TURN_LEFT : | |
q = cor[j] | |
convex.append(q) | |
if q == convexl[0]: | |
break | |
return convex | |
def conve(im): | |
im = Image.open("ejem1.jpg") | |
pix = im.load() | |
hulls = [] | |
for i in range(ancho): | |
for j in range(largo): | |
if pix[i, j] == (255, 255, 255): | |
inicio, arr= bfs(im, (i, j), (255, 0, 0)) | |
hulls.append(con(ver)) | |
for hull in hulls: | |
for cor in hull: | |
pix[cor] = (0, 255, 0) | |
im.save("conv.jpg") | |
return hulls | |
imagen=pygame.image.load("conv.jpg") | |
ventana.blit(imagen,(0,0)) | |
pygame.display.update() |
Referencias:
Repositorio:
2 comentarios:
4 pts lab 3
The Casinos of Las Vegas - Mapyro
Best Casino in Las Vegas, NV · The Buffet 포천 출장안마 at 화성 출장샵 Jardin · The Mirage · The Grand Buffet at The Wynn · The Palazzo 성남 출장안마 · The Buffet at Palazzo · 남양주 출장샵 The Buffet at 충청북도 출장안마
Publicar un comentario