作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处
实现原理
之前筹备了几款图像处理的工具函数,就是为了实现一些定义好的滤镜特效。这几个函数分别为饱和度(Saturation)、明度(Lightness)、对比度(Contrast)、锐化(Sharpen)、阴影(Shadow)、高光(HighLight)、色温(ColorTemperature)。
本文展示的是鲜美滤镜,大家可以根据自身喜好,适当合理地调整滤镜参数。美食-鲜美滤镜参数为:
- 饱和度+25;
- 明度+10;
- 对比度+30;
- 锐化+30,type为0;
- 阴影-5;
- 高光+15;
鲜美滤镜重点在于“提鲜”:通过提高饱和度使美食色彩更鲜艳;明度增加有助于图像整体提亮;对比度增强,是为了突出美食和桌面等背景色的差异;锐化增加,可使得美食纹路细节更丰富;阴影减少是为了使美食和阴影处形成更强烈的对比;高光增加是为了背景提亮。
工具函数链接如下。
功能函数链接
1.饱和度:OpenCV-图像饱和度_翟天保的博客-CSDN博客
2.明度:OpenCV-图像明度_翟天保的博客-CSDN博客
3.对比度:OpenCV-图像对比度_翟天保的博客-CSDN博客
4.锐化:OpenCV-图像锐化_翟天保的博客-CSDN博客
5.阴影:OpenCV-图像阴影调整_翟天保的博客-CSDN博客
6.高光:OpenCV-图像高光调整_翟天保的博客-CSDN博客
C++测试代码
- #include
- #include
-
- using namespace std;
- using namespace cv;
-
- #define max2(a,b) (a>b?a:b)
- #define max3(a,b,c) (a>b?max2(a,c):max2(b,c))
- #define min2(a,b) (a
- #define min3(a,b,c) (a
-
- // 饱和度
- cv::Mat Saturation(cv::Mat src, int percent);
- // 明度
- cv::Mat Lightness(cv::Mat src, float percent);
- // 对比度
- cv::Mat Contrast(cv::Mat src, int percent);
- // 图像锐化
- cv::Mat Sharpen(cv::Mat input, int percent, int type);
- // 图像阴影选取
- cv::Mat Shadow(cv::Mat input, int light);
- // 图像高光选取
- cv::Mat HighLight(cv::Mat input, int light);
- // 色温调节
- cv::Mat ColorTemperature(cv::Mat input, int percent);
-
- int main()
- {
- cv::Mat src = imread("chicken.jpg");
- cv::Mat sat = Saturation(src, 25);
- cv::Mat lig = Lightness(sat, 10);
- cv::Mat con = Contrast(lig, 30);
- cv::Mat sha = Sharpen(con, 30, 0);
- cv::Mat sdo = Shadow(sha, -5);
- cv::Mat hig = HighLight(sdo, 15);
- imshow("original", src);
- imshow("Saturation", sat);
- imshow("Lightness", lig);
- imshow("Contrast", con);
- imshow("Sharpen", sha);
- imshow("Shadow", sdo);
- imshow("HighLight", hig);
- waitKey(0);
- return 0;
- }
测试效果






如果大家有更好的参数配置,欢迎评论区分享,看看谁的滤镜更“鲜美”。
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!
评论记录:
回复评论: