本文目錄一覽:
- 1、Java 圖像識別 數字圖像處理 從一張JPG圖片中識別出若干黑色小方塊
- 2、在java中 在一張圖片中判斷是否有這一個物體 比如花 瓶子? 需要通過什麼方法么
- 3、怎麼用java實現圖片裡面的數字識別
- 4、JAVA識別圖片驗證碼
Java 圖像識別 數字圖像處理 從一張JPG圖片中識別出若干黑色小方塊
你需要關注的主要是這個類:java.awt.image.BufferedImage
可以查閱相關的API。
java圖像處理技術在《java核心技術8 下卷》中有比較詳細的介紹。
相關技術要求和注意事項:RGB標準、ICC配置特性、
建議如果進行像素識別的話可以選取關鍵點的識別方式、而且確認像素是否符合要求使用RGB的範圍識別而非精確識別。
至於具體的識別操作過程,需要你詳細定義開始識別的位置標準(規定的或者識別圖像獲取)、邊界標準、大小(識別塊得SIZE)、分組(給識別塊確定屬性)等
在java中 在一張圖片中判斷是否有這一個物體 比如花 瓶子? 需要通過什麼方法么
如果你已經有和圖片中這個物體完全相同的圖片(也就是這張圖片的部分截圖。。),那麼只需要遍歷一遍像素即可。如果是要識別物品的話,需要用到神經網路,建議不要使用java語言,而是使用matlab語言,matlab中有神經網路的工具箱,更方便而且運算更快。如果必須要使用java語言,在網路上有jni重新封裝的opencv庫,叫做javacv,但我沒有用過,不知道是否能夠做到識別物體。
怎麼用java實現圖片裡面的數字識別
圖片是由點組成(或者是別的方法),記錄點的位置、顏色,控制點就行了。至於ocr,有難度,首先要製作文字的變化範圍及整個字各部分的聯繫,這還是簡單的。然後,圖像分解就行了。額,我不會編程,稍微會點c++,所以這個回答就是假設如果我做這種程序的思路。
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);
}
}
你試試!!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/270741.html