Python-OpenCV實現素描效果

素描的實現原理
要實現一種圖像處理的效果,首先我們需要掌握其實現的具體原理。
相信經常使用PS的用戶肯定自己通過該軟件處理過素描的效果實現。那么,我們可以參考一樣PS實現素描效果的步驟:
去色:因為素描只有黑白兩種顏色,所以彩色圖像必須轉換為灰度圖像
復制去色圖層,并且反色。反色的公式為:Y(i,j)=255-X(i,j)
對反射圖像進行高斯模糊
模糊后的圖像疊加模式選擇顏色減淡效果
而顏色減淡的公式如下:
C=MIN(A+(A+B)/(255-B),255)
C:混合結果
A:去色后的像素點
B:高斯模糊后的像素點
感謝鼓勵與支持??????,往期文章都在最后梳理出來了(●'?'●)
???? 
????
反色的實現
def sketch_effect(img):new_img = img.copy()w, n = img.shapegray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)zero_img = np.zeros((h, w), dtype=np.uint8)gray = cv2.addWeighted(gray, -1, zero_img, 0, 255, 0)
高斯濾波
通過上面的代碼,我們實現了第一步轉換為灰度圖像,也實現了第二步進行反色操作。
接下來,我們需要做的就是實現高通濾波。實現高通濾波的函數為:cv2.GaussianBlur()。
下面,我們來對圖像進行第三個操作:對反色圖像進行高通濾波。代碼如下:
def sketch_effect(img):h, w, n = img.shapegray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)zero_img = np.zeros((h, w), dtype=np.uint8)anti_color = cv2.addWeighted(gray, -1, zero_img, 0, 255, 0)cv2.imshow("2", anti_color)grayGB = cv2.GaussianBlur(anti_color, (15, 15), 0)new_img = cv2.addWeighted(gray, 0.5, grayGB, 0.5, 0)return new_imgif __name__ == "__main__":img = cv2.imread("4.jpg")cv2.imshow("0", img)cv2.imshow("1", sketch_effect(img))cv2.waitKey()cv2.destroyAllWindows()
運行之后效果如下:

左0為原圖,中間1為實現的素描效果,右2為反色圖像。
「?? 感謝大家」
如果你覺得這篇內容對你挺有有幫助的話:
點贊支持下吧,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓 -_-) 歡迎在留言區(qū)與我分享你的想法,也歡迎你在留言區(qū)記錄你的思考過程。 覺得不錯的話,也可以閱讀近期梳理的文章(感謝鼓勵與支持??????): matlab圖像處理及imadjust函數用法詳解 K-means類聚算法從原理到實戰(zhàn) 常用的幾種開源 Linux 服務器操作系統(tǒng) 加速Python列表和字典,讓你代碼更加高效 python 實現自動生成驗證碼圖片 Origin 2019b 圖文安裝教程及下載(附安裝包) 匯總超全的Matplotlib可視化最有價值的 50 個圖表(附完整 Python 源代碼)(一) 教你用Python制作實現自定義字符大小的簡易小說閱讀器 「查缺補漏」鞏固你對算法復雜度的理解 匯總了32個為開發(fā)者提供的免費工具 教你通過python利用近鄰法實現圖片縮小后變成另一張圖(類似幻影坦克) 30 行代碼實現螞蟻森林自動收能量
老鐵,三連支持一下,好嗎?↓↓↓


點分享

點點贊

點在看
評論
圖片
表情

