Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import cv2 as cv
- import numpy as np
- from tkinter.filedialog import askopenfilename
- from matplotlib import pyplot as plt
- # Escoger imagen
- #imagen0 = askopenfilename(filetypes=(("IMAGE files", "*.JPEG"), ("All files", "*.*")))
- # leer y redimensionar el tamaño de la imagen
- imagen = cv.imread("WhatsApp Image 2019-05-09 at 4.27.03 PM.jpeg") #Aqui se pone la ruta de la imagen que va a ser leida
- #imagen = cv.imread(imagen0)
- #imagen = cv.resize(imagen,(1200,1200))
- # cambio de escala de color rgb a hsv
- hsv = cv.cvtColor(imagen, cv.COLOR_BGR2HSV)
- # rango de valores de tonos verdes
- verde_bajos = np.array([30, 30, 30]) # Valores perfectos para el reconocimiento de una planta[30,50,50]
- verde_altos = np.array([80, 255, 255]) # valores perfectos para el reconocimiento de una planta[90,255,255])
- # Usar la mascara
- mascara_verde = cv.inRange(hsv, verde_bajos, verde_altos)
- mask = cv.add(mascara_verde, mascara_verde)
- #filtro = cv.bitwise_and(imagen, imagen, mask=mask)
- # condicion del filtro por vencindades
- kernel = np.ones((5, 5), np.uint8)
- # Transformacion morfologica de apertura
- contornos = cv.morphologyEx(mask, cv.MORPH_OPEN, kernel)
- kernel = np.ones((3, 3), np.uint8)
- contornos = cv.erode(contornos,kernel,iterations = 1)
- contornos = cv.dilate(contornos,kernel,iterations = 1)
- # Colocacion de la mascara
- # suavido gausiano y recuperacion de contornos
- #contornos = cv.cvtColor(contornos,cv.COLOR_BGR2GRAY)
- #contornos = cv.GaussianBlur(apertura, (5, 5), 3)
- # Umbralizado
- ret, tresh = cv.threshold(contornos, 1, 255, cv.THRESH_BINARY | cv.THRESH_TRIANGLE)
- # Recuperacion de contornos
- ds,bordes = cv.findContours(tresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
- # aqui se dibujan los contornos
- #cv.drawContours(imagen, bordes, -1, (0, 0, 255), 2, cv.LINE_AA)
- for c in ds:
- area = cv.contourArea(c)
- if area > 100 and area < 1000:
- (x, y, w, h) = cv.boundingRect(c)
- cv.rectangle(imagen, (x, y), (x + w, y + h), (-1, 255, 0), 1, cv.LINE_AA)
- #for c in bordes:
- # diferencia entre lo recuperado y el resto y asi mostrar en pantalla la segmentacion
- filtro1 = cv.bitwise_and(imagen, imagen, mask=contornos)
- # def para poder mostrar en pantalla resultados
- cv.imshow('Inicial', filtro1)
- cv.imshow('Limpia', contornos)
- #cv.imshow(('cuadrado',nuevo))
- #
- while (1):
- tecla = cv.waitKey(5) & 0xFF
- if tecla == 27:
- break
- cv.destroyAllWindows()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement