当前位置:首页 » 编程语言 » 图片识别java

图片识别java

发布时间: 2022-09-04 12:22:23

① 在java中 在一张图片中判断是否有这一个物体 比如花 瓶子 需要通过什么方法么

如果你已经有和图片中这个物体完全相同的图片(也就是这张图片的部分截图。。),那么只需要遍历一遍像素即可。如果是要识别物品的话,需要用到神经网络,建议不要使用java语言,而是使用matlab语言,matlab中有神经网络的工具箱,更方便而且运算更快。如果必须要使用java语言,在网络上有jni重新封装的opencv库,叫做javacv,但我没有用过,不知道是否能够做到识别物体。

② JAVA识别图片验证码

package com.he;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;

public class CodeFact
extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
//设置页面不缓存
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);

// 在内存中创建图象
int width = 60, height = 20;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);

// 获取图形上下文
Graphics g = image.getGraphics();

//生成随机类
Random random = new Random();

// 设定背景色
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, height);

//设定字体
g.setFont(new Font("Times New Roman", Font.PLAIN, 18));

//画边框
g.setColor(new Color(33,66,99));
g.drawRect(0,0,width-1,height-1);

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160, 200));
for (int i = 0; i < 155; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x, y, x + xl, y + yl);
}

// 取随机产生的认证码(4位数字)
String sRand = "";
for (int i = 0; i < 4; i++) {
String rand = String.valueOf(random.nextInt(10));
sRand += rand;
// 将认证码显示到图象中
g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110),
20 + random.nextInt(110))); //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand, 13 * i + 6, 16);
}

// 将认证码存入SESSION
HttpSession session = request.getSession();
session.setAttribute("rand", sRand);

// 图象生效
g.dispose();

// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
}

public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}

//给定范围获得随机颜色
private Color getRandColor(int fc, int bc) {
Random random = new Random();
if (fc > 255) {
fc = 255;
}
if (bc > 255) {
bc = 255;
}
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r, g, b);
}

}

你试试!!

③ Java 可不可以做图像识别的系统

当然可以。
一、纯JAVA开发的技术可行性,即JAVA是否能够实现图像识别的各种算法
二、如果第一点没有问题,纯JAVA与C++相比,开发效率上的差异。效率要低很多,和具体问题有关。
三、如果第一点没有问题且第二点差异不太大时,纯JAVA与C++相比,相同算法的情况下,软件运行效率的差异。运行效率的差异也很大,也是和具体的算法有关。

④ 用JAVA编写一个程序识别图片上的文字

这种想法太疯狂了。。目前能实现辨别图片里的数字是正常的,辨别英文也有点难度,中文就更难了。。辨别图像里面的文字数字,不是想象的那么简单的,要从像素着手的,比较特定区域的像素,然后程序做出判断,程序实现起来还是比较复杂的

⑤ java 实现图片的文字识别

摘要图像识别是目前很热门的研究领域,涉及的知识很广,包括信息论、模式识别、模糊数学、图像编码、内容分类等等。本文仅对使用Java实现了一个简单的图像文本二值处理,关于识别并未实现。
步骤
建立文本字符模板二值矩阵
对测试字符进行二值矩阵化处理
代码
/*
* @(#)StdModelRepository.java
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
* You should have received a of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package cn.e.ynu.sei.recognition.util;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.logging.Level;import java.util.logging.Logger;import javax.imageio.ImageIO;/** * Hold character charImgs as standard model repository.
* @author 88250
* @version 1.0.0.0, Mar 20, 2008
*/
public class StdModelRepository {
/** * hold character images
*/ List charImgs = new ArrayList();
/** * default width of a character
*/ static int width = 16 /** * default height of a character
*/ static int height = 28 /** * standard character model matrix
*/ public int[][][] stdCharMatrix = new int[27][width][height];
/** * Default constructor.
*/ public StdModelRepository() {
BufferedImage lowercase = null try {
lowercase = ImageIO.read(new File("lowercase.png"));
} catch (IOException ex) {
Logger.getLogger(StdModelRepository.class.getName()).
log(Level.SEVERE, null, ex);
}
for (int i = 0 i < 26 i++) {
charImgs.add(lowercase.getSubimage(i * width,
0,
width,
height));
}
for (int i = 0 i < charImgs.size(); i++) {
Image image = charImgs.get(i);
int[] pixels = ImageUtils.getPixels(image,
image.getWidth(null),
image.getHeight(null));
stdCharMatrix[i] = ImageUtils.getSymbolMatrix(pixels, 0).clone();
ImageUtils.displayMatrix(stdCharMatrix[i]);
}
}
}
/*
* @(#)ImageUtils.java
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
* You should have received a of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package cn.e.ynu.sei.recognition.util;import java.awt.Image;import java.awt.image.PixelGrabber;import java.util.logging.Level;import java.util.logging.Logger;/** * Mainipulation of image data.
* @author 88250
* @version 1.0.0.3, Mar 20, 2008
*/
public class ImageUtils {
/** * Return all of the pixel values of sepecified <code>image< .>* @param image the sepecified image
* @param width width of the image
* @param height height of the image
* @return */ public static int[] getPixels(Image image, int width, int height) {
int[] pixels = new int[width * height];
try {
new PixelGrabber(image, 0, 0, width, height, pixels, 0, width).grabPixels();
} catch (InterruptedException ex) {
Logger.getLogger(ImageUtils.class.getName()).
log(Level.SEVERE, null, ex);
}
return pixels;
}
资源来自:
http://blog.csdn.net/chief1985/article/details/2229572

⑥ Java调用OCR进行图片识别,能同时识别中文简体和中文繁体吗

这和java无关,是ocr软件的事,而且一般不能同时支持

⑦ 用java能分辨出一张图片的不同部位颜色吗

准确的说是可以。
JAVA可以读入一个图片到内存保存为字节数组,再从数组中找到对应的位置下标,以数组内容判断RGB颜色。不过一般人是不会这么做的。
要看你是在什么项目以什么目的需求来取颜色。大部分方案都是以特殊技巧来实现你所提出的问题。
打个比方,如果图片是我自己上传的,只是显示给别人看的,那么我会把图片不同部位自定义编码,不同编码对应不同颜色。然后在显示时对图片设置热区就行了

⑧ 如何使用Java实现屏幕找图功能

测试代码

[java] view plain
public static void main(String[] args) throws Exception {
findImage4FullScreen(ImageCognition.SIM_ACCURATE_VERY);
}

public static void findImage4FullScreen(int sim) throws Exception {
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int w = (int) screenSize.getWidth();
int h = 200;

Robot robot = new Robot();
BufferedImage screenImg = robot.createScreenCapture(new Rectangle(0, 0,
w, h));//对屏幕指定范围进行截图,保存到BufferedImage中
OutputStream out = new FileOutputStream("data/images/screen.png");
ImageIO.write(screenImg, "png", out);//将截到的BufferedImage写到本地

InputStream in = new FileInputStream("data/images/search.png");
BufferedImage searchImg = ImageIO.read(in);//将要查找的本地图读到BufferedImage

//图片识别工具类
ImageCognition ic = new ImageCognition();

List<CoordBean> list = ic.imageSearch(screenImg, searchImg, sim);
for (CoordBean coordBean : list) {
System.out.println("找到图片,坐标是" + coordBean.getX() + ","
+ coordBean.getY());

//标注找到的图的位置
Graphics g = screenImg.getGraphics();
g.setColor(Color.BLACK);
g.drawRect(coordBean.getX(), coordBean.getY(),
searchImg.getWidth(), searchImg.getHeight());
g.setFont(new Font(null, Font.BOLD, 20));
g.drawString("←找到的图片在这里",
coordBean.getX() + searchImg.getWidth() + 5,
coordBean.getY() + 10 + searchImg.getHeight() / 2);
out = new FileOutputStream("data/images/result.png");
ImageIO.write(screenImg, "png", out);
}
}

额外的类

CoordBean

package cn.xt.imgCongnition;

public class CoordBean {

private int x;
private int y;

/**
* 获取x坐标
*
* @return x坐标
*/
public int getX() {
return x;
}

public void setX(int x) {
this.x = x;
}

/**
* 获取y坐标
*
* @return
*/
public int getY() {
return y;
}

public void setY(int y) {
this.y = y;
}

}

RgbImageComparerBean

package cn.xt.imgCongnition;

/**
* RGB 相关,图片相似度计算时使用
*
*/
public class RgbImageComparerBean {

/****** 颜色值数组,第一纬度为x坐标,第二纬度为y坐标 ******/
private int colorArray[][];

/*** 是否忽略此点,若为true,则不纳入比较的像素行列。 ***/
private boolean ignorePx[][];

/**** 图片的宽高 ****/
private int imgWidth;
private int imgHeight;

// 图片的像素总数
private int pxCount;

/**
* 获取图像的二维数组组成
*
* @return 图像的二维数组
*/
public int[][] getColorArray() {
return colorArray;
}

/**
* 要对比的像素总数,会自动筛选掉不对比的颜色
*
* @param pxCount
*/
public void setPxCount(int pxCount) {
this.pxCount = pxCount;
}

/**
* 设置颜色二维数组
*
* @param colorArray
* 颜色二维数组,一维为x轴,二维为y轴
*/
public void setColorArray(int[][] colorArray) {
this.colorArray = colorArray;
this.imgWidth = this.colorArray.length;
this.imgHeight = this.colorArray[0].length;
this.pxCount = this.imgWidth * this.imgHeight;
}

/**
* 是否忽略此点,若为true,则不纳入像素比较行列。
*
* @return 具体x,y坐标的那个像素点
*/
public boolean[][] getIgnorePx() {
return ignorePx;
}

/**
* 是否忽略此点,若为true,则不纳入像素比较行列。
*
* @param ignorePx
* 具体x,y坐标的那个像素点
*/
public void setIgnorePx(boolean[][] ignorePx) {
this.ignorePx = ignorePx;
}

/**
* 获取图像的宽度
*
* @return 图像宽度
*/
public int getImgWidth() {
return imgWidth;
}

/**
* 获取图像的高度
*
* @return 图像高度
*/
public int getImgHeight() {
return imgHeight;
}

/**
* 获取图像里像素的总数
*
* @return
*/
public int getPxCount() {
return pxCount;
}

}

⑨ java识别照片是彩色还是黑白照

你可以判断图片的其中一个像素点,彩色图一般都是RGB组合成的,格式是那种3*3的矩阵,而黑白图像的像素点是通过一个固定的公式转换来的,转换后的像素点是1*3的矩阵

⑩ 怎么用java实现图片里面的数字识别

图片是由点组成(或者是别的方法),记录点的位置、颜色,控制点就行了。至于ocr,有难度,首先要制作文字的变化范围及整个字各部分的联系,这还是简单的。然后,图像分解就行了。额,我不会编程,稍微会点c++,所以这个回答就是假设如果我做这种程序的思路。

热点内容
数控车床编程加工 发布:2025-01-15 14:31:43 浏览:714
怎么破解iphone5密码 发布:2025-01-15 14:26:48 浏览:433
php数组打印 发布:2025-01-15 14:15:56 浏览:621
java流的关闭 发布:2025-01-15 14:15:55 浏览:754
东东农场自动脚本 发布:2025-01-15 14:10:05 浏览:390
apache禁止访问文件 发布:2025-01-15 14:01:55 浏览:442
速腾哪个配置动力最好 发布:2025-01-15 13:56:44 浏览:902
编程做转盘 发布:2025-01-15 13:56:04 浏览:194
安卓辅助脚本如何写 发布:2025-01-15 13:42:50 浏览:127
压缩裤的穿法 发布:2025-01-15 13:39:24 浏览:316