OpenCV-人像—酷感冷艳滤镜

作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

实现原理

       之前筹备了几款图像处理的工具函数,就是为了实现一些定义好的滤镜特效。这几个函数分别为饱和度(Saturation)、明度(Lightness)、对比度(Contrast)、锐化(Sharpen)、阴影(Shadow)、高光(HighLight)、色温(ColorTemperature)。

       本文展示的是酷感冷艳滤镜,适合人像,大家可以根据自身喜好,适当合理地调整滤镜参数。人像-酷感冷艳滤镜参数为:

  1. 对比度+25;
  2. 明度-30;
  3. 高光+20;
  4. 锐化+50;
  5. 饱和度+20;
  6. 色温-20;

       通过提高对比度,使皮肤与背景分离;降低明度,提高高光,可以使人本身处于高亮状态;锐化为了提高服装细节;饱和度提高是为了使肤色更饱满;最后适当降低色温,提高冷艳程度。

       工具函数链接如下。

功能函数链接

1.饱和度:OpenCV-图像饱和度_翟天保的博客-CSDN博客

2.明度:OpenCV-图像明度_翟天保的博客-CSDN博客

3.对比度:OpenCV-图像对比度_翟天保的博客-CSDN博客

4.锐化:OpenCV-图像锐化_翟天保的博客-CSDN博客_opencv图片锐化

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 HighLight(cv::Mat input, int light);

// 色温调节
cv::Mat ColorTemperature(cv::Mat input, int percent);

int main()
{
	cv::Mat src = imread("3.jpg");
	cv::Mat con = Contrast(src, 25);
	cv::Mat lig = Lightness(con, -30);
	cv::Mat hig = HighLight(lig, 20);
	cv::Mat sha = Sharpen(hig, 50, 0);
	cv::Mat sat = Saturation(sha, 20);
	cv::Mat col = ColorTemperature(sat, -20);
	
 	imshow("original", src);
	imshow("Saturation", sat);
	imshow("Lightness", lig);
	imshow("Contrast", con);
	imshow("Sharpen", sha);
	imshow("HighLight", hig);
	imshow("ColorTemperature", col);
	waitKey(0);
	return 0;
}

测试效果

图1 原图1
图2 滤镜效果1
OpenCV-人像—酷感冷艳滤镜_第1张图片 图3 原图2
OpenCV-人像—酷感冷艳滤镜_第2张图片 图4 滤镜效果2
OpenCV-人像—酷感冷艳滤镜_第3张图片 图5 原图3
OpenCV-人像—酷感冷艳滤镜_第4张图片 图6 滤镜效果3
OpenCV-人像—酷感冷艳滤镜_第5张图片 图7 原图4
OpenCV-人像—酷感冷艳滤镜_第6张图片 图8 滤镜效果4

       如果大家有更好的参数配置,欢迎评论区分享,快给你女朋友试试吧~

       如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

你可能感兴趣的:(OpenCV,opencv,图像处理,人像,C++)