一. 效果展示
原图
加滤镜后, 这是夜晚拍的照片, 可见加天空滤镜效果不是很好, 白天拍的加这种滤镜效果挺好, 或者只单单加饱和度或者对比度效果也挺好.
2022.1.3 更新
白天的效果图
原图
加滤镜后
参数. 亲们可以做测试测试排列组合,可能会达到更好的效果,因为实际在P图的过程中也是根据实际的照片进行针对化处理的
- 饱和度+60;
- 明度+25;
- 对比度+60;
- 阴影+20;
- 高光 +25;
- 色温 -30;
二.实现原理
需要用到前几篇博客做的工具函数
风景-天空滤镜参数为:
- 饱和度+35;
- 明度+20;
- 对比度+15;
- 阴影+15;
- 高光-30;
- 色温-40;
三.主函数代码
package com.biubiu.example;
import org.bytedeco.javacpp.BytePointer;
import org.bytedeco.javacpp.opencv_core;
import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.OpenCVFrameConverter;
import javax.swing.*;
import static org.bytedeco.javacpp.opencv_core.*;
import static org.bytedeco.javacpp.opencv_core.CV_32FC1;
import static org.bytedeco.javacpp.opencv_imgcodecs.IMREAD_COLOR;
import static org.bytedeco.javacpp.opencv_imgcodecs.imread;
/**
* @author :张音乐
* @date :Created in 2021/11/20 下午4:17
* @description:风景- 天空滤镜
* @email: zhangyule1993@sina.com
* @version:
*/
public class Sky {
public static void main(String[] args) {
String filepath = "/home/yinyue/opencv/113958-153525479855be.jpg";
Mat img = imread(filepath, IMREAD_COLOR);
if(img.empty()) {
System.out.println("cannot open file");
return;
}
OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat();
// 饱和度调整
Mat sat = doSaturate(img, 35);
// 明度调整
Mat lig = doLightness(sat, 20);
// 对比度调整
Mat con = doContrast(lig, 15);
// 阴影调整
Mat sha = doShadow(con, 15);
// 高光调整
Mat hig = doHighLight(sha, -30);
// 色温调整
Mat target = doHighLight(hig, -40);
// 显示
Frame targetFrame = converter.convert(target);
CanvasFrame targetCanvas = new CanvasFrame("天空滤镜处理后", 1);
targetCanvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
targetCanvas.showImage(targetFrame);
}
}