Detección de armas usando Python-OpenCV

Requisitos previos: Python OpenCV

La detección de armas mediante la detección de objetos es una herramienta útil para tener en su repositorio. Forma la columna vertebral de muchas fantásticas aplicaciones industriales. OpenCV (Biblioteca de visión por computadora de código abierto) es una biblioteca altamente optimizada que se enfoca en aplicaciones en tiempo real.

Enfoque:
 
1) Creación de un archivo Haarcascade de Armas: Consulte Creación de su propio Haarcascade

A partir de aquí, aprenderá cómo crear su propio archivo Haarcascade. Con su única imagen positiva, puede usar el comando opencv_createsamples para crear un montón de ejemplos positivos, usando sus imágenes negativas. Su imagen positiva se superpondrá a estos negativos, y estará en ángulo y todo tipo de cosas. En realidad, puede funcionar bastante bien, especialmente si solo está buscando un objeto específico. Sin embargo, si busca identificar todas las armas, querrá tener miles de imágenes únicas de armas, en lugar de usar opencv_createsamples para generar muestras para usted. Lo mantendremos simple y solo usaremos una imagen positiva, y luego crearemos un montón de muestras con nuestros negativos.

Nota: Para la cascada The Gun haar creada, haga clic aquí.

2) Detección de armas usando OpenCV

import numpy as np
import cv2
import imutils
import datetime
  
   
gun_cascade = cv2.CascadeClassifier('cascade.xml')
camera = cv2.VideoCapture(0)
   
firstFrame = None
gun_exist = False
   
while True:
      
    ret, frame = camera.read()
   
    frame = imutils.resize(frame, width = 500)
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
       
    gun = gun_cascade.detectMultiScale(gray,
                                       1.3, 5,
                                       minSize = (100, 100))
       
    if len(gun) > 0:
        gun_exist = True
           
    for (x, y, w, h) in gun:
          
        frame = cv2.rectangle(frame,
                              (x, y),
                              (x + w, y + h),
                              (255, 0, 0), 2)
        roi_gray = gray[y:y + h, x:x + w]
        roi_color = frame[y:y + h, x:x + w]    
   
    if firstFrame is None:
        firstFrame = gray
        continue
   
    # print(datetime.date(2019))
    # draw the text and timestamp on the frame
    cv2.putText(frame, datetime.datetime.now().strftime("% A % d % B % Y % I:% M:% S % p"),
                (10, frame.shape[0] - 10),
                cv2.FONT_HERSHEY_SIMPLEX,
                0.35, (0, 0, 255), 1)
   
    cv2.imshow("Security Feed", frame)
    key = cv2.waitKey(1) & 0xFF
      
    if key == ord('q'):
        break
  
        if gun_exist:
    print("guns detected")
else:
    print("guns NOT detected")
  
camera.release()
cv2.destroyAllWindows()

Producción:

python-gun-detection-opencv

OpenCV viene con un entrenador y un detector. Si desea entrenar su propio clasificador para cualquier objeto como automóvil, aviones, etc., puede usar OpenCV para crear uno.

Aquí nos ocupamos de la detección de Gun. Primero necesitamos cargar los clasificadores XML requeridos. Luego cargue nuestra imagen de entrada (o video) en modo de escala de grises. Ahora encontramos las armas en la imagen. Si se encuentran armas, devuelve las posiciones de las armas detectadas como Rect(x, y, w, h). Una vez que obtengamos estas ubicaciones, podemos crear un ROI (Región de interés) para el arma.

Publicación traducida automáticamente

Artículo escrito por skyra18 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *