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
opencv Tutorial Challenge 9 Gliederung (Bereich) in OpenCV
Schau dir das an.
Ich habe mit der TensorFlow-②Environment-Konstruktion einen Dir-Grey-Face-Klassifikator erstellt
Das ist Apo.
Die folgenden drei werden erkannt.
Die folgenden drei rechteckigen Bilder werden ausgegeben.
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')
--Lesen Sie das Rechteck als "kukei" anstelle von "tankei".