Comment masquer une image avec Numpy/OpenCV?
J'ai une image que j'ai de la charge avec:
im = cv2.imread(filename)
Je veux garder de données qui se trouve dans le centre de l'image. J'ai créé un cercle comme un masque de la zone que je veux garder.
J'ai créé le cercle avec:
height,width,depth = im.shape
circle = np.zeros((height,width))
cv2.circle(circle,(width/2,height/2),280,1,thickness=-1)
Comment puis-je masquer les données en dehors du cercle de l'image d'origine?
masked_data = im * circle
ne fonctionne pas.
voulez-vous crop circle ?
Oui. Je veux tout garder à l'intérieur du cercle.
Est-ce juste une question de numpy la radiodiffusion?
Oui. Je veux tout garder à l'intérieur du cercle.
Est-ce juste une question de numpy la radiodiffusion?
OriginalL'auteur Hidden Name | 2014-08-01
Vous devez vous connecter pour publier un commentaire.
Utilisation
cv2.bitwise_and
et passer le cercle en tant que masque.cv2.circle(circle_img,(width/2,height/2),280,255,thickness=-1)
(width/2,height/2)
donne la position du cercle (en espérant que le centre) sur l'image, tandis que280
est la taille (en espérant que le rayon du cercle. N'est ce positionnement traduire directement à lax,y
cordinate positionnement?OriginalL'auteur Froyo
circle
est juste un tableau 2D avec1.0
s et0.0
s. Numpy besoin d'aide pour comprendre ce que vous voulez faire avec la troisième dimension de votreim
de sorte que vous devez donner à un axe, puis votre ligne de travail.Mais notez que le masquage est tout simplement le réglage de la couleur à
(0, 0, 0)
de choses à l'extérieur du cercle en fonction de votre code si l'image n'a pas de canal alpha.Cependant, vous avez un autre problème potentiel:
circle
sera par défaut du type de données (qui sera probablementfloat64
oufloat32
. Ce n'est pas bon pour votre image, vous devez modifier la ligne où vous créezcircle
àOriginalL'auteur deinonychusaur
Utilisant NumPy l'affectation à un tableau indexé:
OriginalL'auteur
Dans ce cas, si vous voulez avoir une image circulaire, vous devez écrire un nouvel algorithme et vous devez d'abord être en mesure d'accéder aux coordonnées des pixels. Ensuite, vous pouvez simplement comparer les pixels qui ne sont pas dans le champ d'application de ce cercle ou pas et de les remplacer par une valeur (ou la valeur NULL si elle est acceptée avec votre image de format critères).
Voici un exemple:
OriginalL'auteur Kasrâmvd