Detecção de objetos ao vivo em Python

Find AI Tools in second

Find AI Tools
No difficulty
No complicated process
Find ai tools

Table of Contents

Detecção de objetos ao vivo em Python

Sumário

Introdução {#introduction}

Neste artigo, vamos implementar uma ferramenta de reconhecimento de objetos em Python. Vamos utilizar um modelo pré-treinado e a biblioteca OpenCV para realizar a detecção de objetos em imagens estáticas e em tempo real através da câmera.

Estrutura do projeto {#project-structure}

Antes de iniciarmos o projeto, precisamos configurar a estrutura do mesmo. Para isso, vamos criar uma estrutura de pastas e baixar os arquivos necessários. A estrutura do projeto será a seguinte:

- main.py
- models/
  - mobile_net_ssd_deploy.prototxt
  - mobile_net_ssd.caffemodel
- images/

Instalação das bibliotecas {#library-installation}

Antes de começarmos a implementar o código, precisamos instalar algumas bibliotecas. Abra o terminal e execute os seguintes comandos:

pip install numpy
pip install opencv-python

Carregando o modelo {#model-loading}

Para realizar o reconhecimento de objetos, vamos utilizar um modelo pré-treinado chamado MobileNet SSD. Para isso, vamos fazer o download dos arquivos mobile_net_ssd_deploy.prototxt e mobile_net_ssd.caffemodel e salvá-los na pasta models.

Detectando objetos em imagens estáticas {#object-detection-static-images}

Agora que configuramos a estrutura do projeto e carregamos o modelo, podemos começar a implementar a detecção de objetos em imagens estáticas. Vamos criar uma função chamada detect_objects_static_images que receberá o caminho da imagem como parâmetro.

def detect_objects_static_images(image_path):
    # Carrega a imagem
    image = cv2.imread(image_path)

    # Redimensiona a imagem para 300x300 pixels
    resized_image = cv2.resize(image, (300, 300))

    # Normaliza a imagem
    normalized_image = (resized_image - 127.5) / 127.5

    # Realiza a detecção de objetos
    detections = net.forward(normalized_image)

    # Processa as detecções
    for i in range(detections.shape[2]):
        confidence = detections[0, 0, i, 2]

        # Verifica se a confiança da detecção é maior que 0.2 (20%)
        if confidence > 0.2:
            class_index = int(detections[0, 0, i, 1])
            class_name = classes[class_index]

            # Obtém as coordenadas da detecção
            x1 = int(detections[0, 0, i, 3] * image.shape[1])
            y1 = int(detections[0, 0, i, 4] * image.shape[0])
            x2 = int(detections[0, 0, i, 5] * image.shape[1])
            y2 = int(detections[0, 0, i, 6] * image.shape[0])

            # Desenha um retângulo e exibe o nome do objeto
            cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)
            cv2.putText(image, class_name, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)

    # Exibe a imagem
    cv2.imshow('Detected Objects', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

Detectando objetos em tempo real {#real-time-object-detection}

Agora que já implementamos a detecção de objetos em imagens estáticas, vamos implementar a detecção de objetos em tempo real através da câmera. Para isso, vamos criar uma função chamada detect_objects_real_time_camera.

def detect_objects_real_time_camera():
    # Inicializa a captura de vídeo
    cap = cv2.VideoCapture(0)

    # Loop principal
    while True:
        # Lê o quadro atual da câmera
        ret, frame = cap.read()

        # Redimensiona o quadro para 300x300 pixels
        resized_frame = cv2.resize(frame, (300, 300))

        # Normaliza o quadro
        normalized_frame = (resized_frame - 127.5) / 127.5

        # Realiza a detecção de objetos
        detections = net.forward(normalized_frame)

        # Processa as detecções
        for i in range(detections.shape[2]):
            confidence = detections[0, 0, i, 2]

            # Verifica se a confiança da detecção é maior que 0.2 (20%)
            if confidence > 0.2:
                class_index = int(detections[0, 0, i, 1])
                class_name = classes[class_index]

                # Obtém as coordenadas da detecção
                x1 = int(detections[0, 0, i, 3] * frame.shape[1])
                y1 = int(detections[0, 0, i, 4] * frame.shape[0])
                x2 = int(detections[0, 0, i, 5] * frame.shape[1])
                y2 = int(detections[0, 0, i, 6] * frame.shape[0])

                # Desenha um retângulo e exibe o nome do objeto
                cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
                cv2.putText(frame, class_name, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)

        # Exibe o quadro
        cv2.imshow('Real-time Object Detection', frame)

        # Verifica se a tecla 'q' foi pressionada para sair
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    # Libera a captura de vídeo e fecha as janelas
    cap.release()
    cv2.destroyAllWindows()

Conclusão {#conclusion}

Neste artigo, implementamos uma ferramenta de reconhecimento de objetos em python utilizando um modelo pré-treinado e a biblioteca OpenCV. Aprendemos como detectar objetos em imagens estáticas e em tempo real através da câmera. Essa ferramenta pode ser útil em uma variedade de aplicações, como detecção de objetos em vídeos de vigilância, detecção de rostos em fotos e muito mais. Experimente em diversos cenários e divirta-se explorando essa tecnologia!

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.