本文实例为大家分享了OpenCV实现图像转换为漫画的具体代码,供大家参考,具体内容如下
From 《OpenCV By Example》
1、先canny提取图像的边缘并强化,翻转边缘为黑色,将像素值转换为0-1的值
2、将图像进行双边滤波处理,然后将像素值缩短为每10个灰度级为一个值
3、将前两步得到的结果相乘,显示结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
#include <iostream> using namespace std; #include "opencv2/core.hpp" #include "opencv2/highgui.hpp" #include "opencv2/imgproc.hpp" using namespace cv; int main() { Mat img = imread( "1.jpg" ); float radius = img.cols > img.rows ? (img.rows / 3 ) : (img.cols / 3 ); const double exponential_e = exp( 1.0 ); / * * EDgES * * / / / Apply median filter to remove possible noise Mat imgMedian; medianBlur(img, imgMedian, 7 ); / / Detect edges with canny Mat imgCanny; Canny(imgMedian, imgCanny, 50 , 150 ); / / Dilate the edges Mat kernel = getStructuringElement(MORPH_RECT, Size( 2 , 2 )); dilate(imgCanny, imgCanny, kernel); / / Scale edges values to 1 and invert values imgCanny = imgCanny / 255 ; imgCanny = 1 - imgCanny; / / Use float values to allow multiply between 0 and 1 Mat imgCannyf; imgCanny.convertTo(imgCannyf, CV_32FC3); / / Blur the edgest to do smooth effect blur(imgCannyf, imgCannyf, Size( 5 , 5 )); / * * COLOR * * / / / Apply bilateral filter to homogenizes color Mat imgBF; bilateralFilter(img, imgBF, 9 , 150.0 , 150.0 ); / / truncate colors Mat result = imgBF / 25 ; result = result * 25 ; / * * MERgES COLOR + EDgES * * / / / Create a 3 channles for edges Mat imgCanny3c; Mat cannyChannels[] = { imgCannyf, imgCannyf, imgCannyf }; merge(cannyChannels, 3 , imgCanny3c); / / Convert color result to float Mat resultf; result.convertTo(resultf, CV_32FC3); / / Multiply color and edges matrices / / cout << imgCanny3c << endl; multiply(resultf, imgCanny3c, resultf); / / cout << resultf << endl; / / convert to 8 bits color resultf.convertTo(result, CV_8UC3); / / Show image imshow( "Result" , result); waitKey( 0 ); return 0 ; } |
原图为:
效果图为:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/u014657795/article/details/78913939