Maison >développement back-end >Tutoriel Python >Comment utiliser Python pour convertir des images en style bande dessinée

Comment utiliser Python pour convertir des images en style bande dessinée

PHPz
PHPzavant
2023-05-12 10:52:051486parcourir

Installer OpenCV

Tout d'abord, nous devons installer OpenCV. OpenCV est une bibliothèque de vision par ordinateur open source qui fournit une grande variété d'outils de traitement d'images pouvant être utilisés dans de nombreuses applications différentes.

Nous pouvons installer OpenCV en Python en utilisant la commande suivante : pip install opencv-python

Lire l'image et effectuer la détection des bords

Nous devons lire l'image et utiliser l'algorithme de détection des bords pour identifier les bords de l'image. Cela peut être fait via la fonction Canny dans OpenCV. Exemple :

import cv2

img = cv2.imread('input.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)

Le code ci-dessus lit une image nommée input.jpg, la convertit en une image en niveaux de gris, puis utilise l'algorithme Canny pour détecter les bords. La variable edge contiendra les bords détectés.

Traitez les bords pour produire un effet comique

Ensuite, nous devons traiter les bords pour produire un effet comique. Cela peut être fait en convertissant les bords en lignes noires et en ajoutant une teinte. Exemple :

# 转换为黑色线条
edges = cv2.cvtColor(edges, cv2.COLOR_GRAY2BGR)
edges[np.where((edges != [0, 0, 0]).all(axis=2))] = [0, 0, 255]

# 添加色调
color = cv2.bilateralFilter(img, 9, 300, 300)
cartoon = cv2.bitwise_and(color, edges)

Le code ci-dessus convertit les bords en lignes noires et utilise le rouge comme couleur des lignes. Ensuite, utilisez la fonction cv2.bilatéralFilter pour ajouter une teinte à l'image d'origine. Enfin, les bords et les tons fusionnent pour créer un effet comique.

Enregistrez l'image de l'effet bande dessinée

Enfin, nous pouvons utiliser la fonction cv2.imwrite pour enregistrer localement l'image de l'effet bande dessinée générée. Exemple :

cv2.imwrite('output.jpg', cartoon)

Le code ci-dessus enregistre l'image de l'effet bande dessinée sous Output.jpg.

Le code complet est le suivant :

import cv2
import numpy as np

# 读取图片并进行边缘检测
img = cv2.imread('input.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)

# 对边缘进行处理以生成漫画效果
edges = cv2.cvtColor(edges, cv2.COLOR_GRAY2BGR)
edges[np.where((edges != [0, 0, 0]).all(axis=2))] = [0, 0, 255]
color = cv2.bilateralFilter(img, 9, 300, 300)
cartoon = cv2.bitwise_and(color, edges)

# 保存漫画效果图片
cv2.imwrite('output.jpg', cartoon)

Le code ci-dessus convertit l'image nommée input.jpg en un effet bande dessinée et enregistre l'image d'effet bande dessinée générée en tant que sortie.jpg.

Les effets générés par l'effet bande dessinée varient en fonction de l'image originale, il peut donc être nécessaire d'affiner les paramètres du code pour obtenir le meilleur effet. Avec des expérimentations et des ajustements constants, vous pouvez utiliser Python pour transformer vos images dans un style de bande dessinée unique.

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