java给视频添加水印_javaCV视频添加水印

本文介绍如何使用JavaCV库给视频添加水印,包括从视频中获取图像帧、添加文字和图片水印的步骤,并提供了详细的代码实现。通过OpenCVFrameGrabber抓取视频帧,然后利用Java2DFrameConverter将帧转换为BufferedImage,再添加水印并显示在窗口,同时保存第一帧为图片。
摘要由CSDN通过智能技术生成

想要给视频添加水印,需要从视频中取出图像帧,给图像帧添加文字、图片水印即可

首先需要取到BufferedImage,通过这个就可以用Java的方式添加水印

从grabber中获取BufferedImage:

//获取BufferedImage可以给图像帧添加水印

Java2DFrameConverter javaconverter=new Java2DFrameConverter();

BufferedImage buffImg=javaconverter.convert(grabber.grab());

获取到了BufferedImage就可以开始给视频帧添加文字或者图片水印

用java添加水印:

(1)摄像头视频抓取

(2)Frame和Mat相互转换

(3)给图像添加文字

(4)把添加水印文字的图像转换为Frame并显示到窗口

(5)保存图片

代码实现

运行后会出现一个窗口,窗口中会实时显示日期和eguid正向和eguid翻转字符,关闭窗口相当于结束程序运行。

该程序会自动保存第一帧图像到本地eguid.jpg文件。

// 转换器,用于Frame/Mat/IplImage相互转换

OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();

// 使用OpenCV抓取本机摄像头,摄像头设备号默认0

OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);

// 开启抓取器

grabber.start();

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用javacv库来给视频添加水印。下面是一个简单的示例代码: ```java import org.bytedeco.javacv.*; import org.bytedeco.opencv.opencv_core.*; import org.bytedeco.opencv.opencv_imgproc.*; public class AddWatermarkToVideo { public static void main(String[] args) { String videoPath = "path/to/video.mp4"; String outputPath = "path/to/output.mp4"; String watermarkText = "Your Watermark Text"; FrameGrabber grabber = new FFmpegFrameGrabber(videoPath); FrameRecorder recorder = new FFmpegFrameRecorder(outputPath, grabber.getAudioChannels()); try { grabber.start(); recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264); recorder.setFormat("mp4"); recorder.setFrameRate(grabber.getFrameRate()); recorder.setVideoBitrate((int) grabber.getVideoBitrate()); recorder.start(); OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage(); Frame frame; while ((frame = grabber.grab()) != null) { IplImage image = converter.convert(frame.clone()); addWatermark(image, watermarkText); recorder.record(converter.convert(image)); } recorder.stop(); grabber.stop(); } catch (FrameGrabber.Exception | FrameRecorder.Exception e) { e.printStackTrace(); } } private static void addWatermark(IplImage image, String text) { CvFont font = new CvFont(); cvInitFont(font, CV_FONT_HERSHEY_SIMPLEX, 1.0, 1.0, 0, 2, CV_AA); CvPoint position = new CvPoint(20, 40); CvScalar color = CV_RGB(255, 255, 255); cvPutText(image, text, position, font, color); } } ``` 请注意,您需要将FFmpegFrameGrabber和FFmpegFrameRecorder的依赖项添加到您的项目。您可以在Maven或Gradle添加以下依赖项: ```xml <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>1.5.3</version> </dependency> ``` 这是一个简单的示例,您可以根据您的需求进行修改和扩展。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值