Opencv实现盲水印技术(一)——构建Java工程
来源:互联网 发布:航迹规划算法 编辑:程序博客网 时间:2024/06/04 22:05
前言
这段时间比较火的阿里泄密事件已经告一段落,liu fuqiang在知乎上给出了很详细的解释,帖子中给出了相关理论和matlab代码。链接为:http://www.zhihu.com/question/50735753。过程大致如下:
打水印:先将原图片进行傅里叶变换到频域,加上水印后再通过傅里叶逆变换到空间域恢复图片
解水印:将打有水印的图片通过傅里叶变换到频域,提取出水印。
本文使用opencv实现了盲水印技术,构建了Java Web工程,将盲水印技术做成基础服务,可供整个安全系统调用。
Java工程加载opencv动态库
opencv是用C/C++实现的计算机视觉开源工具,其已经封装了Java接口,可以通过JNI技术进行调用。去opencv的官网下载对应的版本,本文用的是opencv3.0。解压后在build目录中可以找到opencv-300.jar和相应的不同架构动态库,windows下为dll文件,linux下为so文件。
Eclipse中需要在工程的Properties中按如下进行设置即可使用opencv。即加载jar包并设置native library location。
IntelliJ IDEA中打开Project Structure,按照如下设置即可。
应用opencv
使用opencv时,需要在代码中现实的加载库,使用System.loadLibrary加载。
import org.opencv.core.Core;import org.opencv.core.CvType;import org.opencv.core.Mat;public class Main {static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}public static void main(String[] args) {Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);System.out.println(mat.dump());}}上述代码中在静态代码块中加载了对应版本的类库,并生成了一个3x3的单位矩阵。运行结果如下:
[ 1, 0, 0; 0, 1, 0; 0, 0, 1]
小结
本文介绍了opencv在java工程中应该如何加载和应用,接下来将介绍其在Java Web工程中如何动态加载。
0 0
- Opencv实现盲水印技术(一)——构建Java工程
- Opencv实现盲水印技术(二)——使用maven构建Java Web工程
- Opencv实现盲水印技术(三)——傅里叶变换算法及盲水印实现
- Java爬虫(一)--工程的构建
- JAVA技术实现上传图片水印效果
- Java 实现图片水印之文字水印(SpringMVC + Jsp)
- Java 实现图片水印之水印图片(SpringMVC + Jsp)
- java web开发:ajax技术(一)——局部刷新技术的实现
- 图片添加水印(Java 实现)
- java实现缩略图、水印
- Java实现水印功能
- Java实现数字水印
- Java压缩技术(一) ZLib——Java原生实现
- JAVA——构建字符串StringBuffer(一)
- Ant—使用Ant构建简单Java项目(一)
- Java实现 图片水印或者文字水印
- java 实现图片水印 文字水印
- Java实现 图片水印或者文字水印
- Oracle EBS交叉币种(4)-应付交叉币种
- hdu 1421
- 谷歌浏览器退回键 弹出确认重新提交表单
- java 获取CPU 和 硬盘序列号的方法
- java 集合Collection接口
- Opencv实现盲水印技术(一)——构建Java工程
- c++设计模式之工厂方法模式
- AndroidStudio录制真机并转换为GIF
- yii带条件搜索分页
- 移动应用实战(移动OA)之四_会议室管理之一
- 【机器视觉】移动机器人控制软件的设计与实现
- 我看小程序系列文章:1 不一样的角度 解读微信小程序
- android网络请求框架的学习之路——浅谈对Volley,OkHttp,Retrofit的了解与对比
- java虚拟机Jvm入门(一)