Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Importar los paquetes necesarios
- from picamera.array import PiRGBArray
- from picamera import PiCamera
- import time
- import cv2
- import numpy as np
- import imutils
- # Para calcular el tiempo de recalentamiento
- t0 = time.clock()
- # Inicializar la camara y configurar la captura RAW
- camera = PiCamera()
- camera.resolution = (640, 480)
- camera.framerate = 32
- rawCapture = PiRGBArray(camera, size=(640, 480))
- # Calentamiento de la camara
- time.sleep(2.0)
- # Seleccionar los rangos de detección
- lower_range = np.array([29, 86, 30], dtype=np.uint8)
- upper_range = np.array([64, 255, 255], dtype=np.uint8)
- # Capturar imágenes de la cámara
- for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
- # capturar imagen
- image = frame.array
- # Preprocesar
- blurred = cv2.GaussianBlur(image, (11, 11), 0)
- hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
- # mascara
- mask = cv2.inRange(hsv, lower_range, upper_range)
- mask = cv2.erode(mask, None, iterations=2)
- mask = cv2.dilate(mask, None, iterations=2)
- # buscar contornos
- cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
- cnts = imutils.grab_contours(cnts)
- center = None
- # si se encuentran contornos
- if len(cnts) > 0:
- # buscar el contorno mas grande y calcular el centroide y el circulo mas pequeño alrededor
- c = max(cnts, key=cv2.contourArea)
- ((x, y), radius) = cv2.minEnclosingCircle(c)
- M = cv2.moments(c)
- center = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"]))
- if radius > 10:
- # dibujar circulo
- cv2.circle(image, (int(x), int(y)), int(radius), (0, 255, 255), 2)
- cv2.circle(image, center, 5, (0, 0, 255), -1)
- # mostrar la imagen
- cv2.imshow("Frame", image)
- key = cv2.waitKey(1) & 0xFF
- # preparar para mostrar la siguiente imagen
- rawCapture.truncate(0)
- # Sí se presiona ´q´ salir
- if key == ord("q"):
- break
- # calcular el tiempo
- t1 = time.clock() - t0
- print("Transcurrido: ", t1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement