javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作
2016-11-20 01:01
1496 查看
欢迎大家积极开心的加入讨论群
群号:371249677
javaCV图像处理系列:
javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作
javaCV图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制
opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(方便多摄像头遍历及调用,相比javacv更快的摄像头读取速度和效率,方便读取后的图像处理)
本章基于openCV来处理图像操作,除了基本的javacv.jar、javacpp.jar两个jar包外,还需要依赖opencv.jar、opencv-根据平台而定.jar。
(2)Frame和Mat相互转换
(3)给图像添加文字
(4)把添加水印文字的图像转换为Frame并显示到窗口
(5)保存图片
该程序会自动保存第一帧图像到本地eguid.jpg文件。
3、演示
csdn的文字水印请自动忽略,只有左上角日期和中间两个蓝色的eguid!是本程序添加的
群号:371249677
(点击这里进群)
javaCV图像处理系列:javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作
opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(方便多摄像头遍历及调用,相比javacv更快的摄像头读取速度和效率,方便读取后的图像处理)
前言:
本章全部采用openCV中的Mat类型进行图像操作,Mat类型与CvMat和IplImage类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“图像”,openCV对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。本章基于openCV来处理图像操作,除了基本的javacv.jar、javacpp.jar两个jar包外,还需要依赖opencv.jar、opencv-根据平台而定.jar。
1、实现的功能
(1)摄像头视频抓取(2)Frame和Mat相互转换
(3)给图像添加文字
(4)把添加水印文字的图像转换为Frame并显示到窗口
(5)保存图片
2、代码实现
运行后会出现一个窗口,窗口中会实时显示日期和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();
3、演示
csdn的文字水印请自动忽略,只有左上角日期和中间两个蓝色的eguid!是本程序添加的
相关文章推荐
- javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作
- javacpp-opencv图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印
- javacpp-opencv图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制,文字和图片双水印
- Java使用OpenCV实现人脸识别/人眼检测/图片截取/合成/添加水印
- javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
- javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
- 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)
- 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)
- 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)
- 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)
- javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
- 本图片处理类功能非常之强大可以实现几乎所有WEB开发中对图像的处理功能都集成了,包括有缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等功能
- 1.3 实现图片压缩、添加文字或图片水印、指定位置裁剪等功能的ImageUtility(内有效果图)
- java实现缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等
- 1.3 实现图片压缩、添加文字或图片水印、指定位置裁剪等功能的ImageUtility(内有效果图) (转)
- javacpp-opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(增加实时帧率计算方法)
- ImagesUtil java图片操作 缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印等
- C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果,滤波,图像截取) 对图片的处理 : 亮度调整 抓屏 翻转 随鼠标画矩形
- javacpp-opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(增加实时帧率计算方法)
- java实现给图片添加水印和文字