大家好我是阿猩学长,今天给大家利用图像处理库opencv来把图片转换为素描的风格。
其中利用的编程语言为C++。
话不多说先给大家看看实际的效果图。
下面先给大家介绍一下大概的编程思路,再结合代码给大家分析
- 首先将彩色图转换成灰度图
- 对灰度图进行求其反色的操作,就是用255减去每个像素的值
- 对第2步得到的结果采用一个高斯模糊的操作
- 采用颜色亮化(color dodge)的技术将第一步的灰度图和第三步操作后的图片进行混合
下面展示这个程序的关键部分代码:
cv::Mat image = cv::imread("filename"); //灰度方式载入图片
cv::Mat image_black = image.clone(); //克隆一份保存,用于后面亮化
cv::Mat image_blur; cv::Mat image_r;
image = 255 - image; //对图片的取反操作
cv::GaussianBlur(image, image_blur,cv::Size2i(25,25),0,0); //用高斯模糊进行处理
image_blur = 255 - image_blur; //高斯模糊处理后的图像在进行取反
cv::divide(image_black, image_blur,image_r,256); //利用divide除法实现图片亮化
cv::imwrite("filename", image_r); //保存图片
cv::imshow("image",image_r);
cv::waitKey();
如果有不懂的,欢迎大家关注我,在下方评论或者私信提问我,我都会为大家一一为解答。