JAVA使用Marvin在图片中搜索图片
Java对图像的处理框架比较少,目前比较流行的有Jmagick以及Marvin,但Jmagick只能处理图像(上篇Java清除图片中的恶意信息(利用Jmagick)中对Jmagick已做过简略介绍),而Marvin不但可以处理图像,而且可以集成各种插件,操作视频,摄像头来达到各种效果。
Marvin 是一个Java开发的可扩展的图像处理框架,该框架主要提供以下几方面的功能:
- 基本图像操作;
- 从视频中捕获帧;
- 多线程的图像处理;
- 通过GUI界面集成插件;
- 插件性能分析;
- 通过插件进行功能扩展。
授权协议: GPL
开发语言: Java
操作系统: 跨平台
项目主页: http://marvinproject.sourceforge.net/en/index.html
目前插件提供的效果:
艺术化(马塞克,电视效果)、模糊、纹理、分割、变形、渲染、图案、直方图、边缘检测等等,
具体参考:http://marvinproject.sourceforge.net/en/plugins.html
截个电视效果的图大家看下:
使用方法:
1. 下载MarvinFramework_1.3.1(图像处理框架)和JMF1.2(Java媒体处理框架)
2. 将marvin_1.3.1.jar拷贝到你的lib目录,marvin整个文件夹拷贝到工程根目录,该文件夹包含了各种图片处理插件。
3. 若需要对视频处理,则将JMF1.2解压后的customizer.jar、jmf.jar、multiplayer.jar、mediaplayer.jar拷贝到你的工程lib目录,另外
该框架中还有一个jmf-2_1_1e-windows-i586.exe需要安装,这样才能操作你的摄像头,并释放必要的dll文件。
下面是个简单程序,演示了Marvin加载图片,修改大小后写重新生成图片的过程:
- package image;
- import marvin.image.MarvinImage;
- import marvin.io.MarvinImageIO;
- /**
- * Created on 2010-7-9
- * <p>Description: [Marvin学习]</p>
- * @author shixing_11@sina.com
- * @version 1.0
- */
- public class MarvinTest
- {
- /**
- * Created on 2010-7-9
- * <p>Discription:[main]</p>
- * @param args
- * @author:[shixing_11@sina.com]
- */
- public static void main(String[] args)
- {
- String srcFile = "c://img//b.jpg"; //源文件
- String dstFile = "c://img//bb.jpg"; //处理后的文件
- MarvinImage image = MarvinImageIO.loadImage(srcFile); //装载图像
- MarvinImage backupImage = image.clone(); //克隆图像,确保对原图不做修改
- backupImage.resize(800, 600); //设置新宽度和高度
- MarvinImageIO.saveImage(backupImage, dstFile); //保存图像
- }
- }
- package image;
- import marvin.image.MarvinImage;
- import marvin.io.MarvinImageIO;
- /**
- * Created on 2010-7-9
- * <p>Description: [Marvin学习]</p>
- * @author shixing_11@sina.com
- * @version 1.0
- */
- public class MarvinTest
- {
- /**
- * Created on 2010-7-9
- * <p>Discription:[main]</p>
- * @param args
- * @author:[shixing_11@sina.com]
- */
- public static void main(String[] args)
- {
- String srcFile = "c://img//b.jpg"; //源文件
- String dstFile = "c://img//bb.jpg"; //处理后的文件
- MarvinImage image = MarvinImageIO.loadImage(srcFile); //装载图像
- MarvinImage backupImage = image.clone(); //克隆图像,确保对原图不做修改
- backupImage.resize(800, 600); //设置新宽度和高度
- MarvinImageIO.saveImage(backupImage, dstFile); //保存图像
- }
- }
可见Marvin的图片管理是通过类MarvinImageIO来完成的。
Marvin是一个Java开源图像处理框架
项目地址
使用非常简单,按照tutorials一步一步就知道怎么部署代码。
依赖只需要添加marvin/framework/marvin_1.5.5.jar到classpath。
例子:
import marvin.image.MarvinImage;
import marvin.image.MarvinSegment;
import marvin.io.MarvinImageIO;
import java.awt.*;
import java.io.File;
import static marvin.MarvinPluginCollection.*;
public class Subimage {
public Subimage(){
MarvinImage window = MarvinImageIO.loadImage("E:\\msC_desktop\\batlogo.jpg");
MarvinImage eclipse = MarvinImageIO.loadImage("E:\\msC_desktop\\wxlogo.jpg");
MarvinSegment seg1;
int startx = 500, starty = 0;
seg1 = findSubimage(eclipse, window, startx, starty, 0.75);
if(seg1 != null){
System.out.println("Found:" + seg1.x1 + " " + seg1.y1 + " width:"+ (seg1.x2-seg1.x1) + " height:"+(seg1.y2-seg1.y1) );
drawRect(window, seg1.x1, seg1.y1, seg1.x2-seg1.x1, seg1.y2-seg1.y1);
MarvinImageIO.saveImage(window, "E:\\msC_desktop\\window_out.png");
}else{
System.out.println("NOT FOUND");
}
}
private void drawRect(MarvinImage image, int x, int y, int width, int height){
x-=4; y-=4; width+=8; height+=8;
image.drawRect(x, y, width, height, Color.red);
}
public static void main(String[] args) {
new Subimage();
}
}
JAVA使用Marvin在图片中搜索图片的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- Java 图像处理框架-Marvin
网上看到,摘录过来的,暂时还没涉足这方面的东西 Marvin 1.4.5 的插件接口支持处理多个图像作为输入,新的插件可通过多个图片来确认背景,新的插件可使用多个图片来合并相同场景. Marvin 是 ...
- Java Script 编码规范【转】
Java Script 编码规范 以下文档大多来自: Google JavaScript 编码规范指南 Idiomatic 风格 参考规范 ECMAScript 5.1 注解版 EcmaScript ...
- Java生成随机验证码
package com.tg.snail.core.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...
- JAVA课程设计——“小羊吃蓝莓”小游戏
JAVA课程设计--"小羊吃蓝莓"小游戏 1. 团队课程设计博客链接 http://www.cnblogs.com/HXY071/p/7061216.html 2. 个人负责模块或 ...
- Java版2048
功能要求:2048的基本界面,能够实现2048的游戏功能. 总思路:两个类:Game和GameListener. Game负责界面的实现和paint方法的重写 GameListener负责实现键盘和鼠 ...
- 201621123050 《Java程序设计》第5周学习总结
1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 答:接口.has-a.comparable 1.2 尝试使用思维导图将这些关键词组织起来.注:思维导图一般不需要出现过多的字. ...
- Java+opencv实现人脸检测
版本 Java1.8 opencv3.4 代码: import java.awt.Graphics; import java.awt.image.BufferedImage; import javax ...
- atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本
atitit.验证码识别step3----去除边框---- 图像处理类库 attilax总结java版本 1. 去除边框思路原理 1 2. Thumbnailator 是一个用来生成图像缩略图.裁切. ...
随机推荐
- SP14932 【LCA - Lowest Common Ancestor】
专业跟队形 唯一一个有$\LaTeX$的 裸的$LCA$,我用的是$Tarjan~LCA$,注意两点相同特判 #include<iostream> #include<cstdio&g ...
- 2018-2019-2 网络对抗技术 20165301 Exp5 MSF基础应用
2018-2019-2 网络对抗技术 20165301 Exp5 MSF基础应用 实践原理 1.MSF攻击方法 主动攻击:扫描主机漏洞,进行攻击 攻击浏览器 攻击其他客户端 2.MSF的六个模块 查看 ...
- CAS单点登录安装笔记
http://lib.iteye.com/blog/166619 https://www.cnblogs.com/zhenyulu/archive/2013/01/22/2870838.html
- NET Core中使用Angular2的Token base身份认证
下载本文提到的完整代码示例请访问:How to authorization Angular 2 app with asp.net core web api 在ASP.NET Core中使用Angula ...
- vs2010添加头文件与库文件搜索目录
1 添加头文件搜索目录 项目属性->配置属性->C/C++->常规->添加包含目录 2 添加库文件搜索 项目属性->配置属性->VC++目录->库目录
- html导出pdf的四种方式
将html页面导出为pdf文件并打印,可以直接在windows下使用Ctrl + P,苹果下⌘ + P. 如果需要用代码实现,可以考虑jsPDF.iText.wkhtmltopdf等方式. 以下是三种 ...
- html (第四本书第六章盒子模型参考)
上机1 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8 ...
- BZOJ.2660.[BJOI2012]最多的方案(DP)
题目链接 首先我们知道: 也很好理解.如果相邻两项出现在斐波那契表示法中,那它们显然可以合并. 所以我们能得到\(n\)的斐波那契表示,记\(pos[i]\)为\(n\)的斐波那契表示法中,第\(i\ ...
- POJ.1379.Run Away(模拟退火)
题目链接 POJ输出不能用%lf! mmp从4:30改到6:00,把4:30交的一改输出也过了. 于是就有了两份代码.. //392K 500MS //用两点构成的矩形更新,就不需要管边界了 #inc ...
- play framework系列之maven 构建
一,文章内容 1,Play framwwork 的好处就是构建java 项目简单快速.经过下边几步即可完成. play new testSimpleMvn 选择2 java 项目即可. 然后进入到 t ...