java给视频添加水印_javaCV视频添加水印
想要給視頻添加水印,需要從視頻中取出圖像幀,給圖像幀添加文字、圖片水印即可
首先需要取到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();
//做好自己!--eguid版權所有,轉載請注明出處!
CanvasFrame cFrame = new CanvasFrame("做好自己!--eguid!", CanvasFrame.getDefaultGamma() / grabber.getGamma());
cFrame.setAlwaysOnTop(true);
cFrame.setVisible(true);
// 水印文字位置
Point point1 = new Point(10, 50);
Point point2 = new Point(200, 200);
Point point3 = new Point(200, 240);
// 顏色
Scalar scalar1 = new Scalar(0, 255, 255, 0);
Scalar scalar2 = new Scalar(255, 0, 0, 0);
Frame frame = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
int index = 0;
// 關閉窗口即停止運行
while (cFrame.isShowing()) {
if ((frame = grabber.grabFrame()) != null) {
// 取一幀視頻(圖像),并轉換為Mat
Mat mat = converter.convertToMat(grabber.grabFrame());
// 加文字水印,opencv_imgproc.putText(圖片,水印文字,文字位置,字體,字體大小,字體顏色,字體粗度,文字反鋸齒,是否翻轉文字)
opencv_imgproc.putText(mat, "eguid!", point2, opencv_imgproc.CV_FONT_VECTOR0, 2.2, scalar2, 1, 0,
false);
// 翻轉字體,文字平滑處理(即反鋸齒)
opencv_imgproc.putText(mat, "eguid!", point3, opencv_imgproc.CV_FONT_VECTOR0, 2.2, scalar2, 1, 20,
true);
opencv_imgproc.putText(mat, sdf.format(new Date()), point1, opencv_imgproc.CV_FONT_ITALIC, 0.8, scalar1,
2, 20, false);
// 在窗口顯示處理后的圖像,Frame frame=converter.convert(mat);
cFrame.showImage(converter.convert(mat));
if (index == 0) {
// 保存第一幀圖片到本地
opencv_imgcodecs.imwrite("eguid.jpg", mat);
}
// 釋放Mat資源
mat.release();
mat.close();
}
Thread.sleep(40);
index++;
}
cFrame.dispose();// 銷毀窗口
grabber.stop();// 停止抓取器
// 手動釋放資源
scalar1.close();
scalar2.close();
point1.close();
point2.close();
point3.close();
總結
以上是生活随笔為你收集整理的java给视频添加水印_javaCV视频添加水印的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑技巧:键盘上ESC按键的使用小技巧,
- 下一篇: 概率论与数理统计 第四版 浙江大学