加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

一键迈向二次元!用Python将自拍转换为卡通风格

发布时间:2021-06-04 06:28:26 所属栏目:语言 来源:互联网
导读:1. 载入图像 第一个步骤是载入图片。定义read_file函数,其中包含cv2_imshow,来载入我们在Google Colab中选择的图片。 defread_file(filename): img = cv2 .imr

第一个步骤是载入图片。定义read_file函数,其中包含cv2_imshow,来载入我们在Google Colab中选择的图片。

defread_file(filename): 

                       img = cv2.imread(filename) 

                       cv2_imshow(img) 

                       return img 

调用创建的函数来载入图像:

uploaded = files.upload() 

filename = next(iter(uploaded)) 

img = read_file(filename) 

我选择将下面这张图变为卡通图片:

2. 创建边缘蒙版

常见的卡通效果强调图像中边缘的厚度。可以通过cv2.adaptiveThreshold() 函数来检测图像中的边缘。我们可以将egde_mask函数定义为:

defedge_mask(img, line_size,blur_value): 

                gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 

                gray_blur = cv2.medianBlur(gray,blur_value) 

                edges = cv2.adaptiveThreshold(gray_blur, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, line_size,blur_value) 

                return edges 

在该函数中,我们将图像转换成灰度图像,然后使用cv2.medianBlur来减少模糊的灰度图像的噪点。模糊值越大,意味着图像中出现的黑色噪点越少。接着,应用adaptiveThreshold函数,定义边缘的线条粗细。线条越粗,意味着图像中强调的边缘越厚。

定义完函数后,调用函数就可以看到结果了。

line_size = 7 

blur_value = 7edges = edge_mask(img, line_size, blur_value) 

cv2_imshow(edges) 

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!