1
我正在構建一個應用程序,它使用OCR從圖像中讀取文本(使用Tess4J for Google的Tesseract),但我想忽略棕褐色的文本,只能讀取灰色。檢測並從Java中刪除一系列顏色BufferedImage
例如,在下面的圖片中,我只想讀「Ricki」並忽略「AOA」。 http://i.imgur.com/daCuTbB.png
爲了實現這一點,我想在執行OCR之前從圖像中去除棕褐色是我的最佳選擇。
/* Remove RGB Value for Group Tag */
int width = image.getWidth();
int height = image.getHeight();
int[] pixels = new int[width * height];
image.getRGB(0, 0, width, height, pixels, 0, width);
for (int i = 0; i < pixels.length; i++) {
//If pixel is between dark-tan value and light-tan value
if (pixels[i] > 0xFF57513b && pixels[i] < 0xFF6b6145) {
// Set pixel to black
System.out.println("pixel found");
pixels[i] = 0xFF000000;
}
}
image.setRGB(0, 0, width, height, pixels, 0, width);
但是這段代碼也刪除了幾乎所有的灰色文本。您無法簡單地比較我所擁有的一系列值的十六進制顏色值。有另一種方法來檢測一系列的顏色嗎?或者更好的解決這個問題的方法?
爲什麼不把它分解成單個組件? – gpasch
更好的是,將RGB值轉換爲HSV,並基於Hue組件進行比較。 – haraldK
@gpasch由個別組件你是否指個別顏色?問題是單個用戶名中每個像素的十六進制RGB值有很多不同,甚至在其他4個用戶名中也不一樣。 –