Python是一種很受歡迎的動(dòng)態(tài)編程語言,它可以幫助程序員高效地完成各種任務(wù)。最近,Python社區(qū)中涌現(xiàn)出了一種非常流行的風(fēng)格轉(zhuǎn)換算法,即油畫風(fēng)格。如果你想將你的圖片轉(zhuǎn)換成油畫風(fēng)格,那么Python就是你不可或缺的工具。
下面是一個(gè)Python腳本,可以幫助你將圖片轉(zhuǎn)換成油畫風(fēng)格:
import cv2 import numpy as np def oil_painting(img, radius, levels): # 創(chuàng)建空白圖片 height, width = img.shape[:2] result = np.zeros(img.shape, np.uint8) # 等級劃分 interval = int(256 / levels) # 為每個(gè)像素點(diǎn)應(yīng)用油畫算法 for i in range(radius + 1, height - radius): for j in range(radius + 1, width - radius): # 計(jì)算當(dāng)前像素點(diǎn)的直方圖 hist = [0] * levels for k in range(-radius, radius + 1): for l in range(-radius, radius + 1): intensity = int(img[i + k][j + l] / interval) hist[intensity] += 1 # 找到最多的強(qiáng)度 max_intensity = max(hist) # 找到最多的強(qiáng)度對應(yīng)的顏色 color = [0, 0, 0] for k in range(3): sum_intensity = 0 for l in range(levels): if hist[l] == max_intensity: sum_intensity += l * interval color[k] = sum_intensity / max_intensity # 將結(jié)果賦值給目標(biāo)像素點(diǎn) for k in range(3): result[i][j][k] = color[k] return result img = cv2.imread('test.jpg') result = oil_painting(img, 6, 64) cv2.imshow('Oil Painting', result) cv2.waitKey(0)
這個(gè)腳本將讀取一張圖片,將其轉(zhuǎn)換成油畫風(fēng)格,并在窗口中展示結(jié)果。你可以調(diào)整半徑和等級參數(shù),以獲得不同的效果。
總之,Python是一種非常適合進(jìn)行圖像處理和風(fēng)格轉(zhuǎn)換的語言。如果你對圖像處理感興趣,那么Python將是你學(xué)習(xí)的有力幫手。