J'ai essayé la détection d'objets en utilisant Python et OpenCV

introduction

J'ai détecté et extrait le visage ici, mais j'ai pensé que je pourrais le réaliser en copiant sans trop réfléchir. Cette fois, je voulais essayer de détecter des objets autres que le visage, alors j'ai essayé de l'imiter même si je n'avais pas beaucoup de connaissances.

J'ai créé un classificateur de visage pour Dir en gray à l'aide de l'extraction de visage TensorFlow-④

référence

Aperçu du défi 9 du didacticiel opencv (zone) dans OpenCV

environnement

Jetez un œil à ceci.

J'ai créé un classificateur de visage Dir en gris en utilisant la construction TensorFlow-②Environment

Image à utiliser

C'est Apo.

1401205top.jpg

résultat

Les trois suivants sont détectés.

スクリーンショット 2017-06-01 9.48.42.png

Les trois images rectangulaires suivantes sont produites.

1.jpg

2.jpg

0.jpg

Code source

contour_detect.py


#!/usr/local/bin/python
#! -*- coding: utf-8 -*-

import cv2
import numpy as np

#Image spécifiée(path)Détecte l'objet et affiche l'image du rectangle circonscrit
def detect_contour(path):

  #Charger l'image
  src = cv2.imread(path, cv2.IMREAD_COLOR)

  #Convertir en image en échelle de gris
  gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

  #Binarisation
  retval, bw = cv2.threshold(gray, 50, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)

  #Extraire le contour
  #   contours : [Région][Point No][0][x=0, y=1]
  #   cv2.CHAIN_APPROX_NONE:Tenez le milieu
  #   cv2.CHAIN_APPROX_SIMPLE:Ne tenez pas le milieu
  contours, hierarchy = cv2.findContours(bw, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)

  #Nombre de rectangles détectés (spécifiez 0 par défaut)
  detect_count = 0

  #Traitement pour chaque contour
  for i in range(0, len(contours)):

    #Calculer la zone de contour
    area = cv2.contourArea(contours[i])

    #Exclure le bruit (zone trop petite) et le contour global (zone trop grande)
    if area < 1e2 or 1e5 < area:
      continue

    #Rectangle externe
    if len(contours[i]) > 0:
      rect = contours[i]
      x, y, w, h = cv2.boundingRect(rect)
      cv2.rectangle(src, (x, y), (x + w, y + h), (0, 255, 0), 2)

      #Enregistrer l'image pour chaque rectangle extrinsèque
      cv2.imwrite('{Chemin du fichier}' + str(detect_count) + '.jpg', src[y:y + h, x:x + w])

      detect_count = detect_count + 1

  #Afficher une image rectangulaire circonscrite
  cv2.imshow('output', src)
  cv2.waitKey(0)

  #Terminer le traitement
  cv2.destroyAllWindows()

if __name__ == '__main__':
  detect_contour('{Chemin du fichier}/{nom de fichier}.jpg')

D'autres choses que j'ai essayées et qui n'ont pas fonctionné

スクリーンショット 2017-06-01 9.45.40.png スクリーンショット 2017-06-01 9.50.15.png

Résumé

L'étape suivante

Tous les liens de page

Recommended Posts

J'ai essayé la détection d'objets en utilisant Python et OpenCV
J'ai essayé le web scraping en utilisant python et sélénium
[Python] Utilisation d'OpenCV avec Python (détection des bords)
J'ai essayé d'utiliser GrabCut d'OpenCV
J'ai essayé d'utiliser Thonny (Python / IDE)
[Pour les débutants] J'ai essayé d'utiliser l'API Tensorflow Object Detection
J'ai essayé d'utiliser PyEZ et JSNAPy. Partie 2: J'ai essayé d'utiliser PyEZ
J'ai essayé d'utiliser l'optimisation bayésienne de Python
J'ai essayé le rendu non réaliste avec Python + opencv
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
Pydroid 3 - J'ai essayé les options OpenCV et TensorFlow de l'IDE pour Python 3 (Android)
[Traitement d'image] Poo-san est nu par détection de bord en utilisant Python et OpenCV!
Je viens d'effacer l'objet en utilisant la réparation d'image (inpaint) (OpenCV: Python)
J'ai essayé d'utiliser paramétré
Hello World et détection de visage avec OpenCV 4.3 + Python
J'ai essayé d'utiliser PyEZ et JSNAPy. Partie 1: Aperçu
J'ai essayé de "lisser" l'image avec Python + OpenCV
J'ai essayé d'utiliser argparse
J'ai essayé d'utiliser la mimesis
J'ai essayé d'utiliser anytree
vprof - J'ai essayé d'utiliser le profileur pour Python
J'ai essayé de "différencier" l'image avec Python + OpenCV
J'ai essayé d'utiliser Summpy
J'ai essayé Python> autopep8
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
[ML-Aents] J'ai essayé l'apprentissage automatique en utilisant TensorFlow de Unity et Python (compatible v0.11β)
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé la différenciation jacobienne et partielle avec python
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser mecab avec python2.7, ruby2.3, php7
J'ai essayé la synthèse de fonctions et le curry avec python
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé de "binariser" l'image avec Python + OpenCV
J'ai essayé d'utiliser Ipython
J'ai essayé d'utiliser PyCaret
J'ai essayé de lire un fichier CSV en utilisant Python
J'ai essayé d'utiliser cron
J'ai essayé d'utiliser le module Datetime de Python
J'ai essayé d'utiliser ngrok
J'ai essayé d'utiliser face_recognition
J'ai essayé d'utiliser Jupyter
J'ai essayé d'utiliser doctest
J'ai essayé Python> décorateur
J'ai essayé d'utiliser le filtre d'image d'OpenCV
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser jinja2
J'ai essayé d'utiliser du folium
J'ai essayé de mettre à jour le calendrier Google avec des rendez-vous CSV à l'aide de Python et de l'API Google
J'ai essayé d'utiliser la fenêtre de temps
Programmation Python: j'ai essayé d'obtenir (l'exploration) des articles de presse en utilisant Selenium et BeautifulSoup4
J'ai essayé d'utiliser Google Translate à partir de Python et c'était trop facile
J'ai essayé d'exécuter le didacticiel de détection d'objets en utilisant le dernier algorithme d'apprentissage en profondeur
J'ai essayé pipenv et asdf pour le contrôle de version Python