欧美麻豆久久久久久中文_成年免费观看_男人天堂亚洲成人_中国一级片_动漫黄网站免费永久在线观看_国产精品自产av一区二区三区

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁(yè) > IT資訊 > 軟件研發(fā) > 使用Python和OpenCV創(chuàng)建Pointillist繪畫(huà)

使用Python和OpenCV創(chuàng)建Pointillist繪畫(huà)

2020-10-16 16:49:37 | 來(lái)源:中培企業(yè)IT培訓(xùn)網(wǎng)

很多人都喜歡繪畫(huà)技術(shù)之一是點(diǎn)畫(huà)法(pointillism),這是一種繪畫(huà)技術(shù),其中將細(xì)小的不同顏色的點(diǎn)應(yīng)用于圖案中以形成圖像。該技術(shù)依賴(lài)于觀看者的眼睛和心靈將色斑混合到更廣泛的色調(diào)范圍內(nèi)的能力。不同顏色的并置使它們更加生動(dòng),使整個(gè)圖像更具活力。點(diǎn)畫(huà)法是一種很棒的技術(shù),但是要制作這些類(lèi)型的畫(huà),您需要采取有條不紊且漫長(zhǎng)的方法。作為計(jì)算機(jī)視覺(jué)開(kāi)發(fā)人員,我對(duì)處理圖像有很多了解,但是在繪畫(huà)方面很糟糕。那么如何使用Python和OpenCV創(chuàng)建Pointillist繪畫(huà)?

  模擬繪畫(huà)過(guò)程

繪畫(huà)過(guò)程模擬分三個(gè)步驟完成:

1. 調(diào)色板創(chuàng)建

2. 行程大小和長(zhǎng)度計(jì)算

3. 實(shí)際繪畫(huà)

調(diào)色板創(chuàng)建

首先,我們需要確定哪些顏色將出現(xiàn)在“虛擬藝術(shù)家”的調(diào)色板中。我們需要選擇與圖像的顏色一致但又生動(dòng)鮮明的一組顏色。

我們首先運(yùn)行k均值以從圖像中選擇n = 20種主色。k均值的“對(duì)抗性”性質(zhì)會(huì)產(chǎn)生不同的顏色,這些顏色集中在圖像中最常見(jiàn)的顏色周?chē)?/p>

為了增加活力,我們通過(guò)添加kmeans選擇的顏色的一些變化來(lái)增強(qiáng)調(diào)色板。我選擇添加一個(gè)更加飽和的基礎(chǔ)調(diào)色板版本,并在顏色中添加兩個(gè)小的變化(±20色),并增加一點(diǎn)飽和度。

  行程方向和長(zhǎng)度計(jì)算

為了使最終結(jié)果更具動(dòng)感,我們可以使用較小的不同顏色的筆觸代替圓點(diǎn)。實(shí)際上,這是許多點(diǎn)畫(huà)師繪畫(huà)中使用的技術(shù)!我們希望筆觸的方向與圖像的內(nèi)容一致,并使用更長(zhǎng)的筆觸來(lái)描繪邊緣。因此,我們使用圖像漸變來(lái)確定每個(gè)繪畫(huà)筆觸的長(zhǎng)度和方向。

為了計(jì)算筆刷筆觸的方向和長(zhǎng)度,我們?cè)趚和y軸上采用Scharr圖像導(dǎo)數(shù),從而在圖像上定義了矢量場(chǎng)。然后,我們使用高斯模糊對(duì)場(chǎng)進(jìn)行平滑處理,以使最終的“繪畫(huà)”更加連貫。

  繪畫(huà)過(guò)程

我們像一位真正的畫(huà)家一樣繪制最終結(jié)果,一次一擊!對(duì)于每個(gè)筆劃,我們必須決定:

1. 職位

2. 每個(gè)筆觸的方向和長(zhǎng)度

3. 使用哪種顏色的調(diào)色板

選擇一個(gè)隨機(jī)位置可能很誘人,但是這種方法的主要缺點(diǎn)是:我們不知道何時(shí)繪制了足夠的筆觸來(lái)填充整個(gè)圖像。因此,我們通過(guò)在圖像上均勻采樣來(lái)創(chuàng)建筆劃位置的列表,向每個(gè)位置添加一點(diǎn)隨機(jī)噪聲,然后對(duì)列表進(jìn)行混洗以使筆劃具有隨機(jī)順序。

def randomized_grid(h, w, scale):

r = scale//2

grid = []

for i in range(0, h, scale):

for j in range(0, w, scale):

y = random.randint(-r, r) + i

x = random.randint(-r, r) + j

grid.append((y % h, x % w))

random.shuffle(grid)

return grid

一旦我們使用圖像梯度在圖像上定義了矢量場(chǎng),方向和長(zhǎng)度就易于計(jì)算。

angle = math.degrees(gradient.direction(y, x)) + 90

length = int(round(stroke_scale + stroke_scale * math.sqrt(gradient.magnitude(y, x))))

我們將漸變的方向旋轉(zhuǎn)90度,因?yàn)槲覀兿MP觸與圖像邊緣平行(圖像漸變垂直于邊緣)。根據(jù)圖像梯度的大小(即強(qiáng)度)計(jì)算長(zhǎng)度。這里stroke_scale是一個(gè)參數(shù),用于指定筆劃的全局比例,平方根用于使筆劃更均勻。我們不想在筆畫(huà)的長(zhǎng)度上有太大的差異。

筆觸顏色的選擇可能是最困難的部分。我們希望隨機(jī)獲得漂亮的色彩并排,但是我們希望與原始照片保持一致。想法是從調(diào)色板中隨機(jī)選擇一種顏色,從而使與照片下方像素更相似的顏色被選擇的可能性更大。使用顏色之間相似度的softmax函數(shù)確定概率。

代碼

您可以在此處找到源代碼。它與我在這里描述的算法相對(duì)應(yīng),但性能有所提高。該代碼已注釋?zhuān)瑧?yīng)該很容易理解。

上述就是,關(guān)于使用Python和OpenCV創(chuàng)建Pointillist繪畫(huà)的全部?jī)?nèi)容,想了解更多關(guān)于Python的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。

標(biāo)簽: Python OpenCV
主站蜘蛛池模板: 久久青青草原AV免费观看 | 成人A级毛片免费观看AV网站 | 国产成人精品一区二区在线小狼 | 国内少妇人妻丰满av | 国产精品私密保养 | 国产啪精品视频网站免费尤物 | 色77久久综合网 | 男女一边摸一边做羞羞的事情免费 | 制服丝袜有码中文字幕在线 | 免费观看美女裸体网站 | 成人伊人青草久久综合网 | 夜间视频在线观看 | 收集最新中文国产中文字幕 | 丁香五月亚洲综合在线 | 久久九九日本韩国精品 | 97久久精品人人槡人妻人人玩 | 最新欧美精品一区二区三区 | 国产人妻熟女在线观看 | 曰韩免费无码AV一区二区 | 俩个男人添我下面太爽了 | 又粗又大又黄又硬又爽免费看 | 欧美《熟妇的荡欲》在线观看 | 国产香蕉在线观看 | 最新影视在线观看 | 无码人妻aⅴ一区二区三区蓬泽谣 | 高H禁伦餐桌上的肉伦NP | 欧美日韩乱一区二区三区 | 精品无码久久久久久尤物 | 中文无码天天AV天天爽 | 天美传媒国色天香乱码 | 日本久久精品 | 成 人影片 免费观看 | 女人在厨房被添高潮全过程A片 | 日韩免费v片在线观看 | 亚洲美女又黄又爽在线观看 | 亚洲欧美日韩愉拍自拍美利坚 | 欧美高清二区 | 和人妻隔着帘子按摩中字 | 日韩AV无码久久精品免费 | 制服 丝袜 亚洲 中文 综合 | 久久国产AV无码一区二区老太 |