本文实例为大家分享了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