java 用javacv给视频加水印
时间: 2023-02-08 07:18:00 浏览: 194
在使用 JavaCV 给视频加水印时,首先需要按如下步骤操作:
1. 使用 JavaCV 库中的 OpenCVFrameGrabber 类获取视频的帧。
2. 使用 OpenCV 中的 Core.putText 方法在帧上添加文本水印。
3. 使用 JavaCV 库中的 OpenCVFrameRecorder 类将帧录制为新的视频文件。
下面是一个简单的示例代码:
```java
import org.bytedeco.opencv.opencv_core.*;
import org.bytedeco.opencv.opencv_imgproc.*;
import org.bytedeco.opencv.opencv_videoio.*;
public class AddWatermark {
public static void main(String[] args) {
String inputFile = "input.mp4";
String outputFile = "output.mp4";
String watermark = "Copyright © example.com";
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(inputFile);
grabber.start();
int videoWidth = grabber.getImageWidth();
int videoHeight = grabber.getImageHeight();
OpenCVFrameRecorder recorder = new OpenCVFrameRecorder(outputFile, videoWidth, videoHeight);
recorder.start();
Mat mat = new Mat();
int fontFace = Core.FONT_HERSHEY_SIMPLEX;
double fontScale = 1.0;
int thickness = 2;
int baseline = 0;
Size textSize = Core.getTextSize(watermark, fontFace, fontScale, thickness, baseline);
Point textOrg = new Point(videoWidth - textSize.width, textSize.height);
while (grabber.grab()) {
Frame frame = grabber.retrieve();
mat = frame.image;
Core.putText(mat, watermark, textOrg, fontFace, fontScale, new Scalar(255, 255, 255, 0), thickness);
recorder.record(mat);
}
grabber.stop();
recorder.stop();
}
}
```
上面示例中使用 OpenCVFrameGrabber 类打开输入视频文件,然后使用 OpenCVFrameRecorder 类创建一个新的视频文件。在读取每一帧的同时,使用 Core.putText 方法将文本水印添加到帧上,最后将帧记录到新的视频文件中
阅读全文