javacv图片美颜处理,视频美颜处理
javacv图片美颜处理,视频美颜处理
国产剧明星演戏自带十级滤镜,是众所周知的秘密;
使用opencv也能实现一定的美颜效果:
一、图片美颜

代码
package top.lingkang.test.demo;
import org.bytedeco.opencv.opencv_core.*;
import org.bytedeco.opencv.opencv_imgproc.*;
import java.io.File;
import static org.bytedeco.opencv.global.opencv_core.*;
import static org.bytedeco.opencv.global.opencv_imgcodecs.*;
import static org.bytedeco.opencv.global.opencv_imgproc.*;
/**
* @author lingkang
* Created by 2022/6/6
*/
public class Demo01 {
public static void main(String[] args) {
Mat result = new Mat();
Mat image = imread("C:\\Users\\Administrator\\Desktop\\temp\\2.png");
int level = 18;// 值越大,过滤强度越大
bilateralFilter(image, result, level, level * 2, level / 2);
File out = new File("d:/2.png");
if (out.exists())
out.delete();
imwrite(out.getPath(), result);
}
}
二、视频美颜

视频美颜代码
package top.lingkang.test.demo;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.JavaFXFrameConverter;
import org.bytedeco.javacv.OpenCVFrameConverter;
import org.bytedeco.opencv.opencv_core.Mat;
import org.bytedeco.opencv.opencv_videoio.VideoCapture;
import static org.bytedeco.opencv.global.opencv_imgproc.bilateralFilter;
import static org.bytedeco.opencv.global.opencv_videoio.CAP_PROP_FRAME_HEIGHT;
import static org.bytedeco.opencv.global.opencv_videoio.CAP_PROP_FRAME_WIDTH;
/**
* @author lingkang
* Created by 2022/6/6
*/
public class Demo02 extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("最帅的↓↓↓↓↓");
primaryStage.setWidth(600);
primaryStage.setHeight(800);
ImageView imageView = new ImageView();
imageView.setFitWidth(550);
imageView.setFitHeight(750);
HBox box = new HBox();
box.getChildren().add(imageView);
primaryStage.setScene(new Scene(box));
primaryStage.show();
int level = 12;// 值越大,过滤强度越大
// 图像处理
new Thread(new Runnable() {
@Override
public void run() {
JavaFXFrameConverter fxFrameConverter = new JavaFXFrameConverter();
OpenCVFrameConverter openCVFrameConverter = new OpenCVFrameConverter.ToMat();
try {
// 调用摄像头
VideoCapture capture = new VideoCapture();
capture.set(CAP_PROP_FRAME_WIDTH, 600);
capture.set(CAP_PROP_FRAME_HEIGHT, 800);
if (!capture.open(0)) {
System.out.println("无法打开摄像头!");
return;
}
Mat mat = new Mat();
int i = 0;
while (true) {
// 读取
capture.read(mat);
Mat result = new Mat();
// 数值自行调整
bilateralFilter(mat, result, level, level, 100);
Frame convert = openCVFrameConverter.convert(result);
Image image = fxFrameConverter.convert(convert);
imageView.setImage(image);
Thread.sleep(100);
if (i > 200) {// 简单循环
capture.release();
capture.close();
break;
}
i++;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
public static void main(String[] args) {
launch(args);
}
}
javacv图片美颜处理,视频美颜处理的更多相关文章
- Matlab从一系列图片导出AVI视频,导出GIF动图
平台:Win7,Matlab 2014a 从一系列图片导出AVI视频的M代码如下: clear all; % 清除变量 % 官方示例,命令窗口输入“doc VideoWriter” writerObj ...
- 没有内涵段子可以刷了,利用Python爬取段友之家贴吧图片和小视频(含源码)
由于最新的视频整顿风波,内涵段子APP被迫关闭,广大段友无家可归,但是最近发现了一个"段友"的app,版本更新也挺快,正在号召广大段友回家,如下图,有兴趣的可以下载看看(ps:我不 ...
- opencv3.2.0实现连续图片合成avi视频
##名称:利用videowriter实现多张连续图片合成avi视频 ##平台:QT5.7.1+OpenCV3.2.0 ##日期:2017年12月10日 /**************新建QT控制台程序 ...
- opencv图片转幻灯片视频
/*g++ *.cpp `pkg-config --cflags --libs opencv` -std=c++11*/ #include <opencv2/opencv.hpp> usi ...
- Linux 桌面玩家指南:05. 发博客必备的图片处理和视频录制神器
特别说明:要在我的随笔后写评论的小伙伴们请注意了,我的博客开启了 MathJax 数学公式支持,MathJax 使用$标记数学公式的开始和结束.如果某条评论中出现了两个$,MathJax 会将两个$之 ...
- jQuery图片灯箱和视频灯箱
在一些前端页面中经常需要文件上传,为了美观,我们经常做一个灯箱来显示我们选择的文件, 而不是简单的input标签. html 代码:这个是多图片上传 <div class="layui ...
- DEDECMS:解决BMP、jpeg图片或MP4视频无法上传和在后台无法显示
一.BMP图片无法上传解决方法: 1.修改配置文件: 在include-->dialog的文件夹下, select_images_post.php--> 把 $sparr = Array( ...
- JS下载单个图片、单个视频;批量下载图片,批量下载视频
下载单张图片 import JSZip from "jszip"; import FileSaver from "file-saver"; downloadIa ...
- 02 HTML基础-图片和音视频
1.HTML中的图片 HTML5的<figure>和<figcaption>为图片提供了一个语义容器,在标题和图片之间建立了清晰的联系.<figcaption>元素 ...
- Nginx防盗链的3种方法 文件防盗链 图片防盗链 视频防盗链 linux防盗链
Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品,目前Web服务器调查显示Apache下降Ngni ...
随机推荐
- oracle:ORA-14765建索引阻塞创建分区及处理步骤
在生产库建立一个索引,报ORA-14765创建索引时不能创建分区,也就是索引的创建阻塞分区的建立. 处理步骤: 1.与开发人员沟通昨天下午在Tbl_Waste表上建索引,一直未返回成功,定位问题SQL ...
- Blackmail
Blackmail Arthur Hailey The chief house officer, Ogilvie, who had declared he would appear at the Cr ...
- DDMS查看Threads情况
有时候程序运行出现死锁或者信号量卡死是很纠结的问题,单看代码很难分析定位问题,这时候可以借助DDMS来查看threads的运行情况,一目了然. 手机连接上USB,确保adb连通,然后启动Eclipse ...
- PostgreSQL快速导入千万条数据
目录 一.测试环境 二.修改源数据为COPY可用的格式 三.DDL 四.COPY 五.结论 为了与MySQL做个对比,做一个PG的数据导入测试,使用COPY方式,测试环境保持一致,具体如下所述. 一. ...
- Python+SVM
# !/usr/bin/env python # encoding: utf-8 # SVM算法 支持向量机 from sklearn import svm import numpy as np fr ...
- struct 结构体【GO 基础】
〇.前言 虽然 Go 语言中没有"类"的概念,也不支持"类"的继承等面向对象的概念,但是可以通过结构体的内嵌,再配合接口,来实现面向对象,甚至具有更高的扩展性和 ...
- 基本操作:vscode-git使用和命令
Git简介 GIt /git/ 是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到很大的项目版本管理: 通俗的说,解决的问题是: 正常开发,一个团队需要很多人来共同开发 ...
- Vue之class的用法
Vue中class的使用总结如下: 使用形式v-bind:class 简写:class 1.在数组中使用一个class <!DOCTYPE html> <html lang=&qu ...
- 一次完整的Http请求过程(转)
一次完整的Http请求过程 在网上看了很多关于http完整流程的介绍文档,都讲的很不错,但是还是各有缺失,所以自己就根据学习及理解整理了一张图,给大家分享下http一次完整的交互流程,只是大概画了下流 ...
- 一个基于百度飞桨封装的.NET版本OCR工具类库 - PaddleOCRSharp
前言 大家有使用过.NET开发过OCR工具吗?今天给大家推荐一个基于百度飞桨封装的.NET版本OCR工具类库:PaddleOCRSharp. OCR工具有什么用? OCR(Optical Charac ...