Graphbasierte Segmentierung mit Python + OpenCV

Ich habe gehört, dass Facebook das Segmentierungsframework Open Source gemacht hat, und ich brauchte nur Segmentierung, also habe ich es nachgeschlagen.

Segmenting and refining images with SharpMask

Ich wollte dieses Mal einen Kandidatenbereich ohne Lehrer bekommen, weil es unvermeidlich war, Lua oder Torch zu sein, aber dieser Rahmen schien einen Lehrer zu haben, also gab ich es auf und suchte nach etwas anderem .. Dann hatte OpenCV eine solche Funktion, also habe ich es versucht.

graph_segmentation.py


import cv2
import numpy as np

segmentator = cv2.ximgproc.segmentation.createGraphSegmentation(sigma=0.5, k=300, min_size=1000)
src = cv2.imread('image.jpg')
segment = segmentator.processImage(src)
mask = segment.reshape(list(segment.shape) + [1]).repeat(3, axis=2)
masked = np.ma.masked_array(src, fill_value=0)
for i in range(np.max(segment)):
    masked.mask = mask != i
    y, x = np.where(segment == i)
    top, bottom, left, right = min(y), max(y), min(x), max(x)
    dst = masked.filled()[top : bottom + 1, left : right + 1]
    cv2.imwrite('segment_{num}.jpg'.format(num=i), dst)
Parameter
sigma Randglätte (kleiner Wert für komplexe Ränder, großer Wert für glatte Ränder)
k Vielleicht, wie viel die Kandidatenbereiche zu integrieren sind (kleinere Werte teilen sich in viele kleinere Bereiche, größere Werte teilen sich in weniger große Bereiche?)
min_size Minimale Bereichsgröße (wahrscheinlich die Anzahl der Pixel im Bereich)

Es war schwierig, nur den Kandidatenbereich auszuschneiden. Es scheint eine andere Möglichkeit zu geben, OpenCVs BoundingRect zu verwenden, als dies mit Numpy zu tun.

Nachtrag: Der Wert kann mit segmentator.setSigma (Wert), segmentator.setK (Wert), segmentator.setMinSize (Wert) geändert werden.

Anwendungsergebnis auf Lenas Ganzkörperbild, das nicht so platziert werden kann, wie es ist (Sigma = 0,7, k = 1200, min_size = 5000) lena_seg.png

Recommended Posts

Graphbasierte Segmentierung mit Python + OpenCV
Binarisierung mit OpenCV / Python
"Apple-Verarbeitung" mit OpenCV3 + Python3
Bildbearbeitung mit Python OpenCV
Kameraerfassung mit Python + OpenCV
[Python] Verwenden von OpenCV mit Python (Basic)
Verwenden von OpenCV mit Python @Mac
Leuchtendes Leben mit Python und OpenCV
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Neuronales Netzwerk mit OpenCV 3 und Python 3
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Einfache Python + OpenCV-Programmierung mit Canopy
Versuchen Sie die Gesichtserkennung mit Python + OpenCV
Schneiden Sie das Gesicht mit Python + OpenCV aus
Gesichtserkennung mit Kamera mit opencv3 + python2.7
Laden Sie das GIF-Bild mit Python + OpenCV
Lassen Sie uns ein Diagramm mit Python erstellen! !!
Finden Sie Bildähnlichkeit mit Python + OpenCV
Verwenden Sie OpenCV mit Python 3 in Window
Zeichnen Sie eine Illustration mit Python + OpenCV
Verfolgen Sie Baseballbälle mit Python + OpenCV
Zeichnen Sie einen Pfeil (Vektor) mit opencv / python
Grundlegendes Studium von OpenCV mit Python
[Python] Legen Sie den Diagrammbereich mit matplotlib fest
Speichern Sie Videos Frame für Frame mit Python OpenCV
Bilder mit Pupil, Python und OpenCV aufnehmen
Ich habe versucht, mit Python + opencv nicht realistisch zu rendern
[python, openCV] base64 Gesichtserkennung in Bildern
Erstellen verschiedener Photoshop-Videos mit Python + OpenCV ③ Erstellen Sie verschiedene Photoshop-Videos
[Python] Bilder mit OpenCV lesen (für Anfänger)
Bis Sie opencv mit Python verwenden können
Leichte Bildverarbeitung mit Python x OpenCV
Glättung kantengespeichert mit Python + OpenCV (BilateralFilter, NLMeansFilter)
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Python2.7 + CentOS7 + OpenCV3
Scraping mit Python
Python mit Go
Twilio mit Python
Spielen Sie mit 2016-Python
Getestet mit Python
mit Syntax (Python)
OpenCV-Beispiele (Python)
Bingo mit Python
[Hinweis] openCV + Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Hallo Welt- und Gesichtserkennung mit OpenCV 4.3 + Python
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Leistungsvergleich des Gesichtsdetektors mit Python + OpenCV
[Python] Grenzachse des 3D-Graphen mit Matplotlib
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Lesen Sie Python-CSV-Daten mit Pandas ⇒ Graph mit Matplotlib
Kantenextraktion mit Python + OpenCV (Sobel-Filter, Laplace-Filter)
[Python] Zeichnen Sie mit Dash Cytoscape ein gerichtetes Diagramm
Installieren Sie OpenCV 4.0 und Python 3.7 unter Windows 10 mit Anaconda
Stellen Sie OpenCV3 in Python3 zur Verfügung, das mit pyenv installiert wurde
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"