博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA使用Marvin在图片中搜索图片
阅读量:7205 次
发布时间:2019-06-29

本文共 3222 字,大约阅读时间需要 10 分钟。

Java对图像的处理框架比较少,目前比较流行的有Jmagick以及Marvin,但Jmagick只能处理图像(上篇Java清除图片中的恶意信息(利用Jmagick)中对Jmagick已做过简略介绍),而Marvin不但可以处理图像,而且可以集成各种插件,操作视频,摄像头来达到各种效果。

 

Marvin 是一个Java开发的可扩展的图像处理框架,该框架主要提供以下几方面的功能:

  • 基本图像操作;
  • 从视频中捕获帧;
  • 多线程的图像处理;
  • 通过GUI界面集成插件;
  • 插件性能分析;
  • 通过插件进行功能扩展。

授权协议: GPL

 

开发语言: Java

操作系统: 跨平台 

 

项目主页: 

 

目前插件提供的效果:

 

艺术化(马塞克,电视效果)、模糊、纹理、分割、变形、渲染、图案、直方图、边缘检测等等,

具体参考:

 

截个电视效果的图大家看下:

电视效果

 

使用方法:

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加载图片,修改大小后写重新生成图片的过程:

 

[java:nogutter]
  1. package image;  
  2. import marvin.image.MarvinImage;  
  3. import marvin.io.MarvinImageIO;  
  4. /** 
  5.  * Created on 2010-7-9 
  6.  * <p>Description: [Marvin学习]</p> 
  7.  * @author         shixing_11@sina.com 
  8.  * @version        1.0 
  9. */  
  10. public class MarvinTest  
  11. {  
  12.     /** 
  13.      * Created on 2010-7-9  
  14.      * <p>Discription:[main]</p> 
  15.      * @param args 
  16.      * @author:[shixing_11@sina.com] 
  17.      */  
  18.     public static void main(String[] args)  
  19.     {  
  20.         String srcFile = "c://img//b.jpg";     //源文件  
  21.         String dstFile = "c://img//bb.jpg";    //处理后的文件  
  22.         MarvinImage image = MarvinImageIO.loadImage(srcFile);  //装载图像   
  23.         MarvinImage backupImage = image.clone();  //克隆图像,确保对原图不做修改   
  24.         backupImage.resize(800, 600);   //设置新宽度和高度   
  25.         MarvinImageIO.saveImage(backupImage, dstFile);   //保存图像   
  26.     }  
  27. }  
Java代码
  1. package image;  
  2. import marvin.image.MarvinImage;  
  3. import marvin.io.MarvinImageIO;  
  4. /** 
  5.  * Created on 2010-7-9 
  6.  * <p>Description: [Marvin学习]</p> 
  7.  * @author         shixing_11@sina.com 
  8.  * @version        1.0 
  9. */  
  10. public class MarvinTest  
  11. {  
  12.     /** 
  13.      * Created on 2010-7-9  
  14.      * <p>Discription:[main]</p> 
  15.      * @param args 
  16.      * @author:[shixing_11@sina.com] 
  17.      */  
  18.     public static void main(String[] args)  
  19.     {  
  20.         String srcFile = "c://img//b.jpg";     //源文件  
  21.         String dstFile = "c://img//bb.jpg";    //处理后的文件  
  22.         MarvinImage image = MarvinImageIO.loadImage(srcFile);  //装载图像  
  23.         MarvinImage backupImage = image.clone();  //克隆图像,确保对原图不做修改  
  24.         backupImage.resize(800, 600);   //设置新宽度和高度  
  25.         MarvinImageIO.saveImage(backupImage, dstFile);   //保存图像  
  26.     }  
  27. }  
 

 

可见Marvin的图片管理是通过类MarvinImageIO来完成的。

具体API参考:

 

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(); } }

 

转载地址:http://rvoum.baihongyu.com/

你可能感兴趣的文章
在Word中如何实现"后退"?
查看>>
简明 Vim 练级攻略 | 酷壳 - CoolShell.cn
查看>>
养成逻辑的习惯
查看>>
jQuery attributes(上)
查看>>
ISO8583报文协议(转)
查看>>
Android文本框实现搜索和清空效果
查看>>
Logic-算法-XX部队XX侦察队员
查看>>
海量数据(数据量比较大时)的处理分析
查看>>
printf 规定数据输出方式
查看>>
Facebook Graph API(2)--读取数据之picture
查看>>
使用分析服务多维模式建立简单的分析模型
查看>>
Oracle Real Application Testing diagram
查看>>
IoC容器Autofac(2) - 一个简单示例(附demo源码)
查看>>
桥接模式 - 设计模式学习
查看>>
Google Maps Android API v2 (2)- 地图对象
查看>>
MySQL 5.5 手册下载
查看>>
hdu 1300(dp)
查看>>
POJ 1159 - Palindrome 优化空间LCS
查看>>
CH BR8(小学生放假了-clock()/CLOCKS_PER_SEC-斜率优化常错集锦)
查看>>
N!末尾有多少个零
查看>>