OpenCV-美食—巧克力滤镜

Posted 翟天保Steven

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV-美食—巧克力滤镜相关的知识,希望对你有一定的参考价值。

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

实现原理

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

       今天展示的是巧克力滤镜,大家可以根据自身喜好,适当合理地调整滤镜参数。美食-巧克力滤镜参数为:

  1. 饱和度+20;
  2. 明度-15;
  3. 对比度+35;
  4. 锐化+10,type为0;
  5. 阴影+25;
  6. 高光-5;

       之所以这么设计,是考虑到巧克力的颜色普遍为深棕色,通过提高饱和度使棕色更鲜明;明度降低可以使图像整体偏暗,若太亮会使巧克力发白;对比度增强,是为了突出巧克力和桌面等背景色的差异;锐化增加,可使得巧克力纹路细节更丰富;阴影增加是为了使得巧克力深色区域提亮,不然整个图像暗蒙蒙的很压抑;高光减少是为了背景光的干扰。

       工具函数链接如下。

功能函数链接

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

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

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

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

5.阴影:OpenCV-图像阴影调整_翟天保的博客-CSDN博客

6.高光:OpenCV-图像高光调整_翟天保的博客-CSDN博客

C++测试代码

#include <iostream>
#include <opencv2/opencv.hpp>

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<b?a:b)
#define min3(a,b,c) (a<b?min2(a,c):min2(b,c))

// 饱和度
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("chocolate.jpg");
	cv::Mat sat = Saturation(src, 20);
	cv::Mat lig = Lightness(sat, -15);
	cv::Mat con = Contrast(lig, 35);
	cv::Mat sha = Sharpen(con, 10, 0);
	cv::Mat sdo = Shadow(sha, 25);
	cv::Mat hig = HighLight(sdo, -5);
	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;
}

测试效果

图1 原图
图2 效果图

       如果大家有更好的参数配置,欢迎评论区分享,看看谁的滤镜更适合巧克力。

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

以上是关于OpenCV-美食—巧克力滤镜的主要内容,如果未能解决你的问题,请参考以下文章

83.『Ruby美食』自制巧克力淋酱(homemade chocolate sauce)

android 采集摄像头预览帧,使用opencv和MediaCodec直接录制水印滤镜视频

android 采集摄像头预览帧,使用opencv和MediaCodec直接录制水印滤镜视频

美食COCOA LOVE雪吻樱花献礼女神闺蜜节,订购享5折!

神奇可可粉|让你享受美食同时放飞自我 Cocoa Powder Liberates You

HTML5期末大作业:餐饮美食网站设计——咖啡(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 咖啡网页设计 美食餐饮网页设计...(代码片段