Segmentation basée sur un graphique avec Python + OpenCV

J'ai entendu dire que Facebook avait rendu le cadre de segmentation open source, et j'avais juste besoin de segmentation, alors j'ai cherché.

Segmenting and refining images with SharpMask

Je voulais avoir un espace candidat sans professeur cette fois-ci car il était inévitable d'être Lua ou Torch, mais ce cadre semblait avoir un enseignant, alors j'ai renoncé à l'utiliser et en ai cherché un autre .. Ensuite, OpenCV avait une telle fonction, alors je l'ai essayé.

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)
Paramètres
sigma Lissage de la bordure (petite valeur pour les bordures complexes, grande valeur pour les bordures lisses)
k Peut-être combien il faut intégrer les zones candidates (des valeurs plus petites se divisent en plusieurs zones plus petites, des valeurs plus élevées se divisent en moins de grandes zones?)
min_size Taille minimale de la zone (probablement le nombre de pixels de la zone)

Il était difficile de ne supprimer que la zone candidate. Il semble y avoir un moyen d'utiliser le boundingRect d'OpenCV autre que de le faire avec Numpy.

Post-scriptum: La valeur peut être modifiée avec segmentator.setSigma (valeur), segmentator.setK (valeur), segmentator.setMinSize (valeur).

Résultat de l'application à l'image du corps entier de Lena qui ne peut pas être placé tel quel (sigma = 0.7, k = 1200, min_size = 5000) lena_seg.png

Recommended Posts

Segmentation basée sur un graphique avec Python + OpenCV
Binarisation avec OpenCV / Python
"Traitement Apple" avec OpenCV3 + Python3
Édition d'image avec python OpenCV
Capture de caméra avec Python + OpenCV
[Python] Utilisation d'OpenCV avec Python (basique)
Utiliser OpenCV avec Python @Mac
Briller la vie avec Python et OpenCV
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
Réseau neuronal avec OpenCV 3 et Python 3
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
[Python] Utilisation d'OpenCV avec Python (détection des bords)
Programmation facile Python + OpenCV avec Canopy
Essayez la reconnaissance faciale avec python + OpenCV
Découpez le visage avec Python + OpenCV
Reconnaissance faciale avec caméra avec opencv3 + python2.7
Charger une image gif avec Python + OpenCV
Faisons un graphe avec python! !!
Trouver la similitude d'image avec Python + OpenCV
Utiliser OpenCV avec Python 3 dans Window
Dessinez une illustration avec Python + OpenCV
Suivre les balles de baseball avec Python + OpenCV
Dessinez une flèche (vecteur) avec opencv / python
Etude de base d'OpenCV avec Python
[Python] Définissez la plage du graphique avec matplotlib
Enregistrer la vidéo image par image avec Python OpenCV
Capturer des images avec Pupil, python et OpenCV
J'ai essayé le rendu non réaliste avec Python + opencv
[python, openCV] base64 Reconnaissance faciale dans les images
Créez diverses vidéos Photoshop avec Python + OpenCV ③ Créez diverses vidéos Photoshop
[Python] Lire des images avec OpenCV (pour les débutants)
Jusqu'à ce que vous puissiez utiliser opencv avec python
Traitement d'image léger avec Python x OpenCV
Lissage des bords enregistrés avec python + OpenCV (BilateralFilter, NLMeansFilter)
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Python2.7 + CentOS7 + OpenCV3
Grattage avec Python
Python avec Go
Twilio avec Python
Jouez avec 2016-Python
Testé avec Python
avec syntaxe (Python)
Exemples OpenCV (Python)
Bingo avec python
[Remarque] openCV + python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Hello World et détection de visage avec OpenCV 4.3 + Python
J'ai essayé de "lisser" l'image avec Python + OpenCV
Comparaison des performances du détecteur de visage avec Python + OpenCV
[Python] axe limite du graphe 3D avec Matplotlib
J'ai essayé de "différencier" l'image avec Python + OpenCV
Lire les données csv Python avec Pandas ⇒ Graphique avec Matplotlib
Extraction de bords avec python + OpenCV (filtre Sobel, filtre laplacien)
[Python] Dessinez un graphe orienté avec Dash Cytoscape
Installez OpenCV 4.0 et Python 3.7 sur Windows 10 avec Anaconda
Rendre OpenCV3 disponible à partir de python3 installé avec pyenv
J'ai essayé de "binariser" l'image avec Python + OpenCV