偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一鍵進(jìn)入二次元!用Python將自拍轉(zhuǎn)換為卡通風(fēng)格

開(kāi)發(fā) 后端
本教程將展示如何利用OpenCV在Python中賦予圖像卡通效果。教程中將使用Google Colab來(lái)編寫(xiě)并運(yùn)行代碼。

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)。

如今,畫(huà)素描或創(chuàng)作漫畫(huà)并不一定要手動(dòng)完成,許多應(yīng)用程序可以把你的照片轉(zhuǎn)換成卡通圖片。這并不像你想象中那么難,只需幾行代碼就能實(shí)現(xiàn)想要的效果。

有一個(gè)名為OpenCV的庫(kù),為計(jì)算機(jī)視覺(jué)應(yīng)用提供了通用基礎(chǔ)設(shè)施,并對(duì)機(jī)器學(xué)習(xí)算法進(jìn)行了優(yōu)化。它可用于識(shí)別物體、檢測(cè)并生成高分辨率圖像。本教程將展示如何利用OpenCV在Python中賦予圖像卡通效果。教程中將使用Google Colab來(lái)編寫(xiě)并運(yùn)行代碼。

[[379578]]

要想制造出卡通效果,需要注意兩點(diǎn):邊緣和調(diào)色板。這就是照片和卡通圖片之間的區(qū)別。要調(diào)整這兩個(gè)要點(diǎn),將通過(guò)四個(gè)主要步驟:

  • 載入圖像
  • 創(chuàng)建邊緣蒙版
  • 減少調(diào)色板
  • 將邊緣蒙版與經(jīng)過(guò)顏色處理的圖像結(jié)合起來(lái)

在開(kāi)始之前,別忘了在筆記本中導(dǎo)入所需的庫(kù),尤其是cv2和NumPy。

  1. defread_file(filename): 
  2.                        img = cv2.imread(filename) 
  3.                        cv2_imshow(img) 
  4.                        return img 

1. 載入圖像

第一個(gè)步驟是載入圖片。定義read_file函數(shù),其中包含cv2_imshow,來(lái)載入我們?cè)贕oogle Colab中選擇的圖片。

  1. defread_file(filename): 
  2.                        img = cv2.imread(filename) 
  3.                        cv2_imshow(img) 
  4.                        return img 

調(diào)用創(chuàng)建的函數(shù)來(lái)載入圖像:

  1. uploaded = files.upload() 
  2. filename = next(iter(uploaded)) 
  3. img = read_file(filename) 

我選擇將下面這張圖變?yōu)榭ㄍ▓D片:

2. 創(chuàng)建邊緣蒙版

常見(jiàn)的卡通效果強(qiáng)調(diào)圖像中邊緣的厚度??梢酝ㄟ^(guò)cv2.adaptiveThreshold() 函數(shù)來(lái)檢測(cè)圖像中的邊緣。我們可以將egde_mask函數(shù)定義為:

  1. defedge_mask(img, line_size,blur_value): 
  2.                 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
  3.                 gray_blur = cv2.medianBlur(gray,blur_value) 
  4.                 edges = cv2.adaptiveThreshold(gray_blur, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, line_size,blur_value) 
  5.                 return edges 

在該函數(shù)中,我們將圖像轉(zhuǎn)換成灰度圖像,然后使用cv2.medianBlur來(lái)減少模糊的灰度圖像的噪點(diǎn)。模糊值越大,意味著圖像中出現(xiàn)的黑色噪點(diǎn)越少。接著,應(yīng)用adaptiveThreshold函數(shù),定義邊緣的線(xiàn)條粗細(xì)。線(xiàn)條越粗,意味著圖像中強(qiáng)調(diào)的邊緣越厚。

定義完函數(shù)后,調(diào)用函數(shù)就可以看到結(jié)果了。

  1. line_size = 7 
  2. blur_value = 7edges = edge_mask(img, line_size, blur_value) 
  3. cv2_imshow(edges) 

邊緣蒙版檢測(cè)

3. 減少調(diào)色板

在顏色方面,照片和素描的主要區(qū)別是它們各自的顏色數(shù)量。素描的顏色比照片少。因此,我們使用顏色量化來(lái)減少照片中的顏色數(shù)量。

要進(jìn)行顏色量化,我們應(yīng)用OpenCV庫(kù)提供的K均值聚類(lèi)算法。為了在接下來(lái)的步驟中使用更方便,可以定義color_quantization函數(shù)如下:

  1. defcolor_quantization(img, k): 
  2.                         # Transform theimage 
  3.                           data = np.float32(img).reshape((-1, 3)) 
  4.                                                 # Determinecriteria 
  5.                           criteria = (cv2.TERM_CRITERIA_EPS+ cv2.TERM_CRITERIA_MAX_ITER, 20, 0.001) 
  6.              # ImplementingK-Means 
  7.                           ret, label, center = cv2.kmeans(data, k, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS) 
  8.                           center = np.uint8(center) 
  9.                           result = center[label.flatten()] 
  10.                           resultresult = result.reshape(img.shape) 
  11.                           return result 

可以調(diào)整k值來(lái)確定想要應(yīng)用到圖像的顏色數(shù)量:

  1. total_color = 9 
  2. img = color_quantization(img, total_color) 

在本例中,圖像的k值設(shè)置為9。結(jié)果如下所示:

顏色量化后

完成顏色量化后,可以通過(guò)雙邊濾波來(lái)降低圖像中的噪點(diǎn)。這會(huì)使圖像變得稍微模糊,且銳度降低。

  1. blurred = cv2.bilateralFilter(img, d=7sigmaColor=200,sigmaSpace=200

這里有三個(gè)參數(shù),你可以根據(jù)自己的喜好進(jìn)行調(diào)整。

  • d —每個(gè)像素鄰域的直徑。
  • sigmaColor —該參數(shù)的值越大,表示半等色的區(qū)域越大。
  • sigmaSpace –該參數(shù)的值越大,意味著較遠(yuǎn)的像素只要其顏色足夠接近,就會(huì)相互影響。

使用雙邊濾波后

4. 將邊緣蒙版與經(jīng)過(guò)顏色處理的圖像相結(jié)合

最后一步是將我們之前創(chuàng)建的邊緣蒙版與經(jīng)過(guò)顏色處理的圖像相結(jié)合。要做到這一點(diǎn),需要使用cv2.bitwise_and函數(shù)。

  1. cartoon = cv2.bitwise_and(blurred, blurred, mask=edges

這就是原圖的“卡通版”:

最終效果

現(xiàn)在你可以開(kāi)始創(chuàng)建屬于自己的卡通效果啦。除了調(diào)整我們上面使用的參數(shù)值,你還可以從OpenCV中添加另一個(gè)函數(shù)來(lái)給你的照片添加特殊效果,庫(kù)中還有很多可以探索的東西。嘗試愉快!

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2020-06-08 10:03:33

視頻AI動(dòng)畫(huà)

2024-07-05 14:29:49

2021-01-21 06:06:30

Jenkins分支管道CI

2015-11-09 15:09:11

騰訊嗶哩嗶哩BAT

2020-03-16 09:26:56

開(kāi)發(fā)技能代碼

2018-07-02 17:48:31

視頻

2024-01-04 08:32:28

2024-11-07 18:54:26

2017-03-27 14:00:38

白熊視頻/趣聞錄

2022-06-07 12:25:16

GPT-3AI

2023-12-03 08:36:33

AI模型

2023-11-16 12:39:13

模型數(shù)據(jù)

2009-07-02 15:12:50

JSP Jdbc

2023-03-08 08:22:48

虛擬人AI作畫(huà)表情遷移

2021-02-25 17:21:57

微軟Word 文檔PowerPoint

2024-04-08 14:07:51

Animagine開(kāi)源

2025-01-02 07:10:00

2022-06-09 10:03:58

Python頭像動(dòng)漫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)