Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. import cv2 as cv
  2. import numpy as np
  3. from tkinter.filedialog import askopenfilename
  4. from matplotlib import pyplot as plt
  5.  
  6. # Escoger imagen
  7. #imagen0 = askopenfilename(filetypes=(("IMAGE files", "*.JPEG"), ("All files", "*.*")))
  8.  
  9. # leer y redimensionar el tamaño de la imagen
  10. 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
  11. #imagen = cv.imread(imagen0)
  12. #imagen = cv.resize(imagen,(1200,1200))
  13.  
  14. # cambio de escala de color rgb a hsv
  15. hsv = cv.cvtColor(imagen, cv.COLOR_BGR2HSV)
  16.  
  17. # rango de valores de tonos verdes
  18. verde_bajos = np.array([30, 30, 30]) # Valores perfectos para el reconocimiento de una planta[30,50,50]
  19. verde_altos = np.array([80, 255, 255]) # valores perfectos para el reconocimiento de una planta[90,255,255])
  20.  
  21. # Usar la mascara
  22. mascara_verde = cv.inRange(hsv, verde_bajos, verde_altos)
  23. mask = cv.add(mascara_verde, mascara_verde)
  24.  
  25.  
  26. #filtro = cv.bitwise_and(imagen, imagen, mask=mask)
  27.  
  28. # condicion del filtro por vencindades
  29. kernel = np.ones((5, 5), np.uint8)
  30.  
  31.  
  32. # Transformacion morfologica de apertura
  33. contornos = cv.morphologyEx(mask, cv.MORPH_OPEN, kernel)
  34. kernel = np.ones((3, 3), np.uint8)
  35. contornos = cv.erode(contornos,kernel,iterations = 1)
  36. contornos = cv.dilate(contornos,kernel,iterations = 1)
  37. # Colocacion de la mascara
  38.  
  39. # suavido gausiano y recuperacion de contornos
  40. #contornos = cv.cvtColor(contornos,cv.COLOR_BGR2GRAY)
  41. #contornos = cv.GaussianBlur(apertura, (5, 5), 3)
  42.  
  43. # Umbralizado
  44. ret, tresh = cv.threshold(contornos, 1, 255, cv.THRESH_BINARY | cv.THRESH_TRIANGLE)
  45. # Recuperacion de contornos
  46. ds,bordes = cv.findContours(tresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
  47. # aqui se dibujan los contornos
  48. #cv.drawContours(imagen, bordes, -1, (0, 0, 255), 2, cv.LINE_AA)
  49.  
  50. for c in ds:
  51. area = cv.contourArea(c)
  52. if area > 100 and area < 1000:
  53. (x, y, w, h) = cv.boundingRect(c)
  54. cv.rectangle(imagen, (x, y), (x + w, y + h), (-1, 255, 0), 1, cv.LINE_AA)
  55.  
  56. #for c in bordes:
  57.  
  58. # diferencia entre lo recuperado y el resto y asi mostrar en pantalla la segmentacion
  59.  
  60. filtro1 = cv.bitwise_and(imagen, imagen, mask=contornos)
  61.  
  62. # def para poder mostrar en pantalla resultados
  63.  
  64. cv.imshow('Inicial', filtro1)
  65. cv.imshow('Limpia', contornos)
  66. #cv.imshow(('cuadrado',nuevo))
  67.  
  68. #
  69. while (1):
  70. tecla = cv.waitKey(5) & 0xFF
  71. if tecla == 27:
  72. break
  73. cv.destroyAllWindows()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement