- 操作系統:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 編程語言:C++11
算法描述
鉛筆風格非寫實線描圖。
該函數通過圖像處理技術將輸入的彩色圖像轉換為兩種風格的鉛筆素描效果:
- dst1:炭筆效果的灰度圖(模擬鉛筆線條的明暗對比)。
- dst2:鉛筆素描著色圖(結合原圖色彩信息的素描效果)。
函數原型
void cv::pencilSketch
(InputArray src,OutputArray dst1,OutputArray dst2,float sigma_s = 60,float sigma_r = 0.07f,float shade_factor = 0.02f )
參數
- src 輸入 8 位 3 通道圖像。
- dst1 輸出 8 位 1 通道圖像。
- dst2 輸出圖像(與 src 大小和類型相同)。
- sigma_s 取值范圍為 0~200。
- sigma_r 取值范圍為 0~1。
- shade_factor 取值范圍為 0~0.1。
代碼示例
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;int main() {Mat src = imread("/media/dingxin/data/study/OpenCV/sources/images/jiangnan.jpg");if (src.empty()) {cout << "無法讀取圖像!" << endl;return -1;}Mat dst1, dst2;pencilSketch(src, dst1, dst2, 60, 0.07, 0.02); // 使用默認參數// 或自定義參數:// pencilSketch(src, dst1, dst2, 30, 0.1, 0.1); imshow("炭筆效果(dst1)", dst1);imshow("鉛筆素描著色圖(dst2)", dst2);waitKey(0);return 0;
}
運行結果
參數調整 | 效果變化 |
---|---|
增大 sigma_s | 線條更平滑,細節減少 |
減小 sigma_r | 突出大尺度結構(如輪廓) |
增大 shade_factor | 對比度更高 |