C#:圣诞节内卷,铅笔画制作
Posted 胖胖的战士
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#:圣诞节内卷,铅笔画制作相关的知识,希望对你有一定的参考价值。
前言
一年一度的圣诞节又要到了,虽然不是中国传统节日,但当下很人却很喜欢过这个欢乐的节日,并乐于打造参与属于这个节日的仪式感。
说到仪式感,仪式感有很多,比如
结婚纪念日,给你的妻子买一束鲜花,是婚姻的仪式感;
孩子过生日,给TA做一顿喜欢的饭菜或者举办一个小Party,是亲情的仪式感;
朋友升职,给他送上一份真心的祝福和喜欢的礼物,是友情的仪式感。
还有给自己喜欢的人做一个圣诞小工具,这是属于程序员的仪式感
村上春树曾说,如果没有这些小确幸,人生只不过是干巴巴的沙漠而已。回想那些感到幸福的小瞬间,总会让我们觉得简单而美好。
然而内卷也即将开始。
1、程序员必须内卷,各路语言争相竞技。
python 拥有强大的第三方库,可以制作很多精美的效果,比如绘制颗圣诞
数,做个圣诞雪人,进行图片处理等。
javascript当然不甘落后,圣诞树,玫瑰花,圣诞贺卡,页面效果等也信手拈来。
网上也有大量的相关教程可以学习,各种效果都有。
偶然在一个文章中看到了铅笔画自作,本人也加入了内卷大军中来。不过采用的是C#制作,下面介绍下如何实现。
2、世上本无圣诞老人,所有的礼物都来自爱你的人
先上效果图(图为斋藤飞鸟,网图)
(1)实现步骤
采用opencvsharp第三方库处理
- 安装第三方库
在工具,NuGet程序包管理器中,选择管理解决方案的NuGet程序包,搜索opencv,下载openCvSharp3-AnyCPU,或者该软件最新版本
- 图像灰度处理
public Bitmap open_cv_to_gray(String path)
Mat src = new Mat(path);
Mat result = src.CvtColor(ColorConversionCodes.BGR2GRAY);
return OpenCvSharp.Extensions.BitmapConverter.ToBitmap(result);
- 图像反色处理
public Bitmap open_cv_to_grayscale(String path)
Mat src = new Mat(path, ImreadModes.Grayscale);
Mat result = new Mat();
Cv2.BitwiseNot(src, result);
return OpenCvSharp.Extensions.BitmapConverter.ToBitmap(result);
- 反色图像高斯模糊
public Bitmap open_cv_blur(Bitmap bitmap)
Mat src = OpenCvSharp.Extensions.BitmapConverter.ToMat(bitmap);
using (Mat dst = new Mat())
//注意:size 参数一定要是奇数 (均值模糊) Y 轴模糊
Cv2.Blur(src, dst, new OpenCvSharp.Size(21, 21), new OpenCvSharp.Point(-1, -1));
Bitmap map = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(dst);
return map;
- 高斯模糊后再次反色
public Bitmap open_cv_to_grayscale(Bitmap bitmap)
Mat mat = OpenCvSharp.Extensions.BitmapConverter.ToMat(bitmap);
Mat result = new Mat();
Cv2.BitwiseNot(mat, result);
return OpenCvSharp.Extensions.BitmapConverter.ToBitmap(result);
- 最后图像计算
将灰度图和高斯模糊再次反色图进行除法运算
public Bitmap open_cv_divide(Bitmap gray, Bitmap gblur)
Mat mat_gray = OpenCvSharp.Extensions.BitmapConverter.ToMat(gray);
Mat mat_gblur = OpenCvSharp.Extensions.BitmapConverter.ToMat(gblur);
Mat outmat = new Mat();
Cv2.Divide(mat_gray, mat_gblur, outmat, 256);//矩阵相除
Cv2.WaitKey(0);
return OpenCvSharp.Extensions.BitmapConverter.ToBitmap(outmat);
流程如上,安照流程处理就可实现上述效果啦。
(2)下载地址
以上是关于C#:圣诞节内卷,铅笔画制作的主要内容,如果未能解决你的问题,请参考以下文章