點擊下方卡片,關注“OpenCV與AI深度學習”公眾號
視覺/影像重磅干貨,第一時間送達!

導讀
本文主要介紹在OpenCV中如何使用一行代碼實作影像轉灰色鉛筆畫、彩色鉛筆畫和卡通效果,
背景介紹
GAN(生成對抗網路)在深度學習領域的風靡,部分應歸功于影像的風格遷移,各式各樣的風格遷移效果更讓人眼花繚亂,殊不知OpenCV的Photo模塊中也提供了幾個影像特效處理的方法,簡單一行代碼就可以實作影像轉灰色鉛筆畫、彩色鉛筆畫和卡通畫的效果,
使用介紹與效果演示
一、灰色鉛筆畫、彩色鉛筆畫效果

引數:
| src | 輸入8位三通道影像 |
| dst1 | 輸出8位單通道影像(灰色鉛筆畫結果圖) |
| dst2 | 與輸入影像相同的通道數和大小(彩色鉛筆畫結果圖) |
| sigma_s | 取值范圍0~200 |
| sigma_r | 取值范圍0~1 |
| shade_factor | 取值范圍0~0.1 |
sigma_s,sigma_r:
影像處理和計算機視覺中的大多數平滑濾波器(例如高斯濾波器或盒式濾波器)都有一個稱為 sigma_s(用于 Sigma_Spatial)的引數,用于確定平滑量,典型的平滑濾波器用像素的相鄰像素的加權和替換像素的值,鄰域越大,過濾后的影像看起來越平滑,鄰域的大小與引數 sigma_s 成正比,
就像其他平滑過濾器一樣,sigma_s控制鄰域的大小,sigma_r(用于 sigma_range)控制鄰域內不同顏色的平均程度,較大的sigma_r 會產生較大的恒定顏色區域,
shade_factor:
范圍 0 到 0.1 ,是輸出影像強度的簡單縮放,值越高,結果越亮,
代碼演示與效果:
C++:
Mat src = imread("yuan.png", IMREAD_COLOR);Mat imgGray, imgColor;pencilSketch(src, imgGray, imgColor, 5, 0.1f, 0.03f);imshow("Pencil Sketch", imgGray);imshow("Color Pencil Sketch", imgColor);
Python:???????
import cv2src = cv2.imread('yuan.png')dst_gray, dst_color = cv2.pencilSketch(src, sigma_s=5, sigma_r=0.1, shade_factor=0.03)cv2.imshow('gray_pencil', dst_gray)cv2.imshow('color_pencil', dst_color)cv2.waitKey()cv2.destroyAllWindows()
原圖:

灰色鉛筆畫效果:

彩色鉛筆畫效果:

二、卡通畫效果

風格化旨在生成具有多種效果的數字影像,而不是專注于照片寫實,邊緣感知濾鏡非常適合風格化,因為它們可以抽象出低對比度區域,同時保留或增強高對比度特征,
引數:
| src | 輸入8位三通道影像 |
| dst | 與輸入影像相同的通道數和大小(卡通畫結果圖) |
| sigma_s | 取值范圍0~200 |
| sigma_r | 取值范圍0~1 |
代碼演示與效果:
C++:???????
Mat src = imread("yuan.png", IMREAD_COLOR);Mat result;stylization(src, result, 5, 0.6);imshow("Stylization", result);
Python:???????
import cv2src = cv2.imread('yuan.png')dst = cv2.stylization(src, sigma_s=5, sigma_r=0.6)cv2.imshow('cartoon', dst)cv2.waitKey()cv2.destroyAllWindows()
原圖:

結果圖:

歡迎大家加入OpenCV與AI深度學習官方微信群一起學習交流:

—THE END—

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/341886.html
標籤:其他
上一篇:初階資料結構——堆疊
