Eliminar contornos pequeños mediante area
Publicado por sergio (1 intervención) el 21/07/2020 23:16:27
Hola, Quiero eliminar contornos después de hacer el filtrado de imágenes debido que aun obtengo ruido, eliminar los contornos con áreas pequeñas, al crear una lista con el área de los contornos todo esta perfecto,
pero al usar un while y recorrer la lista para eliminar las áreas que no cumplan con la condicion if dentro del while la
posicion del vector jamas cambia de la posicion cero(0), queda un bucle infinito, adjunto el codigo la llamada de las funciones y el uso de ellas son para filtrar la imagen,hallar contornos,dibujar y mostrar no subo la parte de las funciones estan en otro scrip, el error esta donde intento eliminar los elementos de la lista de contornos, dentro de el while.
Nota: al momento de subir la imagen me surgio otro problema pero sigo sin solucionarlo.
CODIGO:
pero al usar un while y recorrer la lista para eliminar las áreas que no cumplan con la condicion if dentro del while la
posicion del vector jamas cambia de la posicion cero(0), queda un bucle infinito, adjunto el codigo la llamada de las funciones y el uso de ellas son para filtrar la imagen,hallar contornos,dibujar y mostrar no subo la parte de las funciones estan en otro scrip, el error esta donde intento eliminar los elementos de la lista de contornos, dentro de el while.
Nota: al momento de subir la imagen me surgio otro problema pero sigo sin solucionarlo.
CODIGO:
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
import numpy as np
import cv2
import matplotlib.pyplot as plt
import contorno as cn
imagen=cv2.imread('pz3.jpg')
_,imgray,contornos=cn.contorno_filtro(imagen)
imagen=cn.translacion_imagen(imagen)
colorContornos=(255,255,0)
cnt=-1
grosor=3
imagen=cn.dibujar_contornos(imagen,contornos,cnt,colorContornos,grosor)
area=[]
posicion=0
for i in range(len(contornos)):
---area.append(cv2.contourArea(contornos[i]))
while posicion<len(area):
-if area[posicion]<=3:
---contornos.pop(posicion)
-else:
---posicion=posicion+1
cv2.imshow('imagen contornos',imagen)
cv2.waitKey(0)
cv2.destroyAllWindows()
- Escritorio.rar(1,2 KB)
Valora esta pregunta


0