微信公眾號(hào):OpenCV學(xué)堂
關(guān)注獲取更多計(jì)算機(jī)視覺(jué)與深度學(xué)習(xí)知識(shí)
國(guó)慶節(jié)了,用OpenCV實(shí)現(xiàn)漸變版國(guó)慶頭像,用技術(shù)給給自己換個(gè)國(guó)慶版頭像!
實(shí)現(xiàn)過(guò)程
實(shí)現(xiàn)這個(gè)其實(shí)超級(jí)簡(jiǎn)單,只需要兩步!
第一步,找一張國(guó)旗模板圖象,然后生成mask模板,圖示如下:

第二步,選擇一張頭像圖象,根據(jù)mask權(quán)重與模板圖象重新像素疊加混合。就生成了國(guó)慶版漸變頭像了。

源碼如下:
import cv2 as cvimport numpy as npdef auto_mask_demo(image):gq = cv.imread("D:/2.png")cv.imshow("input", gq)# 生成mask區(qū)域h, w, c = gq.shapemask = np.zeros((h, w), dtype=np.float32)for row in range(h):start = np.int(np.abs(np.sin(row * np.pi / 180) * 50))mask[row, start:w] = np.linspace(0, 255, w-start)mask = mask / 255.0cv.imshow("mask", mask)# generate icondst = cv.resize(image, (w, h), interpolation=cv.INTER_CUBIC)result = np.zeros_like(dst)for row in range(h):for col in range(w):w2 = mask[row, col]w1 = 1.0 - w2b1, g1, r1 = gq[row, col]b2, g2, r2 = dst[row, col]b = b1 * w1 + b2 * w2g = g1 * w1 + g2 * w2r = r1 * w1 + r2 * w2result[row, col] = (np.int(b), np.int(g), np.int(r))cv.imshow("profile image", result)cv.imwrite("D:/result.png", result)cv.waitKey(0)cv.destroyAllWindows()if __name__ == "__main__":src = cv.imread("D:/1.png")auto_mask_demo(src)
最后:見(jiàn)笑啦!博文寫(xiě)比較水~~~~~ (轉(zhuǎn)載請(qǐng)注明!可以自由轉(zhuǎn)載,無(wú)需開(kāi)白)

推薦閱讀
CV全棧開(kāi)發(fā)者說(shuō) - 從傳統(tǒng)算法到深度學(xué)習(xí)怎么修煉
Pytorch輕松實(shí)現(xiàn)經(jīng)典視覺(jué)任務(wù)
教程推薦 | Pytorch框架CV開(kāi)發(fā)-從入門(mén)到實(shí)戰(zhàn)
OpenCV4 C++學(xué)習(xí) 必備基礎(chǔ)語(yǔ)法知識(shí)三
OpenCV4 C++學(xué)習(xí) 必備基礎(chǔ)語(yǔ)法知識(shí)二