Maison >développement back-end >Tutoriel Python >Comment supprimer les résidus des images à l'aide de Python

Comment supprimer les résidus des images à l'aide de Python

王林
王林avant
2024-02-06 08:30:12885parcourir

如何使用 Python 去除图像中的残差

Contenu de la question

L'image1 contient un rectangle avec des résidus

et Image2 représentent le résultat souhaité.

Je souhaite obtenir le même résultat qu'Image2 en utilisant Image1 en Python, mais je ne sais pas si c'est possible ni la méthode nécessaire.

J'ai essayé d'utiliser la transparence de l'image pour la supprimer mais je ne sais pas si cela est possible.


Bonne réponse


Votre "résiduel"image est moins saturée que l'image "noyau", vous pouvez donc comparer "résiduel" avec "noyau", voir l'article wiki Encyclopedia hsv .

En utilisant imagemagick, je peux convertir votre image en espace colorimétrique HSV, supprimer le canal hv, puis seuiller le canal de saturation pour trouver les zones les plus saturées, comme ceci :

magick input.png -colorspace hsv -separate -delete 0,2 -threshold 75% rssult.png

En utilisant python et opencv, cela ressemble à ceci :

import cv2 as cv
import numpy as np

# Load image
im = cv.imread(YOURIMAGE)

# Convert to HSV colourspace and split channels
hsv = cv.cvtColor(im, cv.COLOR_BGR2HSV)
H, S, V = cv.split(hsv)

# Make mask of areas of high saturation 
coreMask = S > 200

# Scale up from range 0..1 to range 0..255 and save as PNG
cv.imwrite('result.png', coreMask * 255)

Si je divise l'image en composants h, s et v et que je trace h (teinte) à gauche, s (saturation) au milieu et v (valeur, c'est-à-dire luminosité) à droite, vous pouvez obtenir le s au centre Image (Saturation), la forme "noyau" a des valeurs de pixels plus élevées, "résiduel" a des valeurs de pixels plus faibles :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer