Ich habe versucht, Objekte mit Python und OpenCV zu erkennen

Einführung

Ich habe das Gesicht hier erkannt und extrahiert, aber ich dachte, ich könnte es durch Kopieren realisieren, ohne zu viel nachzudenken. Dieses Mal wollte ich versuchen, andere Objekte als das Gesicht zu erkennen, also versuchte ich es nachzuahmen, obwohl ich nicht viel Wissen hatte.

Ich habe mit TensorFlow-④ Gesichtsextraktion einen Gesichtsklassifikator für Dir en grey erstellt

Referenz

opencv Tutorial Challenge 9 Gliederung (Bereich) in OpenCV

Umgebung

Schau dir das an.

Ich habe mit der TensorFlow-②Environment-Konstruktion einen Dir-Grey-Face-Klassifikator erstellt

Bild zu verwenden

Das ist Apo.

1401205top.jpg

Ergebnis

Die folgenden drei werden erkannt.

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

Die folgenden drei rechteckigen Bilder werden ausgegeben.

1.jpg

2.jpg

0.jpg

Quellcode

contour_detect.py


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

import cv2
import numpy as np

#Angegebenes Bild(path)Erkennt das Objekt des umschreibenden Rechtecks und gibt es aus
def detect_contour(path):

  #Bild laden
  src = cv2.imread(path, cv2.IMREAD_COLOR)

  #In Graustufenbild konvertieren
  gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

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

  #Kontur extrahieren
  #   contours : [Region][Point No][0][x=0, y=1]
  #   cv2.CHAIN_APPROX_NONE:Halten Sie den Mittelpunkt
  #   cv2.CHAIN_APPROX_SIMPLE:Halten Sie den Mittelpunkt nicht
  contours, hierarchy = cv2.findContours(bw, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)

  #Anzahl der erkannten Rechtecke (standardmäßig 0 angeben)
  detect_count = 0

  #Verarbeitung für jede Kontur
  for i in range(0, len(contours)):

    #Berechnen Sie die Konturfläche
    area = cv2.contourArea(contours[i])

    #Rauschen (zu kleine Fläche) und Gesamtkontur (zu große Fläche) ausschließen
    if area < 1e2 or 1e5 < area:
      continue

    #Externes Rechteck
    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)

      #Speichern Sie das Bild für jedes extrinsische Rechteck
      cv2.imwrite('{Dateipfad}' + str(detect_count) + '.jpg', src[y:y + h, x:x + w])

      detect_count = detect_count + 1

  #Umschriebenes rechteckiges Bild anzeigen
  cv2.imshow('output', src)
  cv2.waitKey(0)

  #Verarbeitung beenden
  cv2.destroyAllWindows()

if __name__ == '__main__':
  detect_contour('{Dateipfad}/{Dateiname}.jpg')

Andere Dinge habe ich versucht und nicht funktioniert

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

Zusammenfassung

--Lesen Sie das Rechteck als "kukei" anstelle von "tankei".

Nächster Schritt

Alle Seitenlinks

Recommended Posts

Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Ich habe versucht, Web-Scraping mit Python und Selen
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Ich habe versucht, GrabCut von OpenCV zu verwenden
Ich habe versucht, Thonny (Python / IDE) zu verwenden.
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
Ich habe versucht, PyEZ und JSNAPy zu verwenden. Teil 2: Ich habe versucht, PyEZ zu verwenden
Ich habe versucht, die Bayes'sche Optimierung von Python zu verwenden
Ich habe versucht, mit Python + opencv nicht realistisch zu rendern
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Pydroid 3 - Ich habe die OpenCV- und TensorFlow-Optionen von IDE für Python 3 (Android) ausprobiert.
[Bildverarbeitung] Poo-san ist durch Kantenerkennung mit Python und OpenCV nackt!
Ich habe das Objekt gerade mit Image Repair (Inpaint) (OpenCV: Python) gelöscht.
Ich habe versucht, parametrisiert zu verwenden
Hallo Welt- und Gesichtserkennung mit OpenCV 4.3 + Python
Ich habe versucht, PyEZ und JSNAPy zu verwenden. Teil 1: Übersicht
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Ich habe versucht, Summpy zu verwenden
Ich habe Python> autopep8 ausprobiert
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
[ML-Aents] Ich habe versucht, maschinelles Lernen mit Unity und TensorFlow of Python (v0.11β-kompatibel) zu lernen.
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe Jacobian und teilweise Differenzierung mit Python versucht
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, Mecab mit Python2.7, Ruby2.3, PHP7 zu verwenden
Ich habe Funktionssynthese und Curry mit Python versucht
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"
Ich habe versucht, Ipython zu verwenden
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, eine CSV-Datei mit Python zu lesen
Ich habe versucht, Cron zu verwenden
Ich habe versucht, das Datetime-Modul von Python zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, doctest zu verwenden
Ich habe Python> Decorator ausprobiert
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, den Google-Kalender mit CSV-Terminen mithilfe von Python und Google API zu aktualisieren
Ich habe versucht, das Zeitfenster zu verwenden
Python-Programmierung: Ich habe versucht, Nachrichtenartikel mit Selenium und BeautifulSoup4 abzurufen (zu crawlen)
Ich habe versucht, Google Translate aus Python zu verwenden, und es war einfach zu einfach
Ich habe versucht, das Objekterkennungs-Tutorial mit dem neuesten Deep-Learning-Algorithmus auszuführen
Ich habe pipenv und asdf für die Python-Versionskontrolle ausprobiert