OpenCV-美食—鲜美滤镜
作者:翟天保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 <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("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;
}
测试效果
如果大家有更好的参数配置,欢迎评论区分享,看看谁的滤镜更“鲜美”。
如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!
OpenCV-美食—鲜美滤镜相关推荐
- OpenCV通过维纳滤镜恢复散焦图像的实例(附完整代码)
OpenCV通过维纳滤镜恢复散焦图像的实例 OpenCV通过维纳滤镜恢复散焦图像的实例 OpenCV通过维纳滤镜恢复散焦图像的实例 #include <iostream> #include ...
- OpenCV离焦去模糊滤镜
OpenCV离焦去模糊滤镜 离焦去模糊滤镜 目标 理论 什么是降级图像模型? 如何恢复模糊的图像? 什么是维纳过滤器? 源代码 解释 结果 离焦去模糊滤镜 目标 在本教程中,您将学习: 什么是退化图像 ...
- OpenCV实现马赛克滤镜
OpenCV实现马赛克滤镜 实现用按下鼠标左键拖动时,在鼠标经过的路径上打上马赛克. 马赛克的原理是将图像中选中区域的像素用这个选中区域中的某一像素覆盖. 为了不让鼠标重复经过图像中同一个的时候,选取 ...
- 学习opencv:PS滤镜—曝光过度
曝光过度滤镜可以模拟出传统摄影术中,在暗房显影过程中短暂增加光线强度而产生的过度曝光效果. 原理: 像素值取原图像和反色图像中较小的值. 代码: #include <iostream> # ...
- 学习opencv:PS滤镜—等高线
摸索了两天,终于把等高线效果做出来了,摸索的过程也有记录的意义.下面开始. 等高线滤镜有色阶.较低.较高三个控制项,根据PS书籍记载,选择"较低"选项时将在基准亮度以下的轮廓上产生 ...
- 学习opencv:PS滤镜—扩散
原理: 扩散滤镜的效果是局部混乱而整体有序,可在邻域中随机取值实现,这样在邻域中便是混乱的,而邻域间仍保持有序,从而保证了整体的有序. 代码: #include <iostream> #i ...
- Opencv之色调均化滤镜
1.介绍 色调均化功能通常是在进行修片处理前期比较常用的功能之一,如果让我们自己实现色调均化功能,我觉得大部分人会用直方图均衡化试一试,刚好,此方法就是借用直方图均衡化,由于彩色图片一般是RGB三通道 ...
- 学习opencv:PS滤镜—马赛克
原理:马赛克可以理解为降低原图像的分辨率,用一组大像素覆盖原图区域,大像素的值用覆盖区域小像素的均值替代. 代码: #include<iostream> #include <open ...
- 学习opencv:PS滤镜—浮雕
实现浮雕效果的算子有很多,效果大同小异,不同算子的处理结果在细节上会有所差异.事实上,任何一阶差分算子都可用于实现浮雕效果,简单起见,这里使用算子[-1,1]. 代码如下 #include<io ...
最新文章
- coursera 《现代操作系统》 -- 第十一周 IO系统
- Oracle 11g Release 1 (11.1) Data Pump 导出模式
- Oracle-PROCEDURE权限解读
- zabbix监控之二----Zabbix受控端及监控项
- 最新微信公众平台js sdk整合PHP版
- python跳转到新页面、如何等待页面加载完_python urllib2 – 在抓取之前等待页面完成加载/重定向?...
- 清空StringBuilder的三种方法及效率
- 低代码平台会成为企业数字化基础设施么?
- padding不显示背景色_PS常用快捷键有哪些?小白职场必备快捷键,再也不担心被难到...
- ubuntu16.04下ROS操作系统学习笔记(四 )机器人系组成、URDF机器人建模、xacro模型优化
- sap 打印预览界面点击打印时记录打印次数_9个Excel打印神技巧!从此打印不求人!...
- 关于参数的写法规则,参数引用几种写法
- 在Debian 11上创建软盘镜像分配给qemu虚拟机并使用
- axure element ui素材_web元件库 ElementUI元件库+后台模板页面+官网组件 pc元件库(兼容Axure9)...
- jboss-5.1.0_JBoss企业SOA平台5.0和Developer Studio 3.0
- Radiology:影像组学:图像不仅仅是图片,它们还是数据
- java定义苹果类Apple_定义一个水果接口Fruit,里面定义一个表示吃水果的eat方法。定义一个苹果类Apple和一个橘子...
- 计算机领域中的CAE,什么是CAE?
- Windows部署Apache服务器步骤
- linux 文件夹 775,linux - 如何为文件夹及其所有子文件夹和文件设置chmod?
热门文章
- Matlab - 文件目录路径操作
- 用 python 实现各种排序算法(转)
- 【转】在 2016 年做 PHP 开发是一种什么样的体验?(一)
- 客户端压测server端计算qps以及不同延迟时间下响应数量所占百分比
- 11muduo_base库源码分析(二)
- LCA树两个节点最低公共祖先
- html 块级注释,HTML blockquote 标签 | 教程 | codingbefore
- 乐山计算机学校新歌王,星歌王第二季乐山市计算机学校专场赛决赛完美落幕!...
- python对数组分类_有效地从字典Python中对数组进行分类
- 程序显示文本框_vb程序语言题库