Quelqu'un a-t-il une suggestion pour une bibliothèque Java qui effectue le recadrage et le redressement automatique des images (comme celles récupérées d'un scanner à plat)?Bibliothèque d'images Java pour redresser et recadrer les images
Répondre
ImageMagick peut le faire; vous pouvez utiliser le ImageMagick Java bindings. L'opérateur auto-crop est probablement ce que vous cherchez. Le redressement automatique est un problème beaucoup plus difficile et implique un traitement d'image important; Je ne suis pas sûr si ImageMagick peut gérer cela. Si vous parvenez à comprendre les paramètres d'inclinaison en utilisant autre chose, ImageMagick peut définitivement le déformer pour vous.
Je suppose que quelqu'un a construit une bibliothèque sur le Java Advanced Imaging API pour ce faire. Vous pouvez essayer Google pour "Java Advanced Imaging".
J'ai écrit une simple application de correction d'image, y compris la source. Disponible à l'adresse:
J'ai écrit un pas si simple port d'un très bon deskewer. Cela fonctionne mieux si vous avez du texte dans l'image.
Redressement
Jetez un oeil à Tess4j (Java JNA wrapper for Tesseract). Vous pouvez combiner ImageDeskew.getSkewAngle() avec ImageHelper.rotate(BufferedImage image, double angle).
Il est un exemple sur la façon de l'utiliser sur le dossier de test du projet tess4j Tesseract1Test.java
public void testDoOCR_SkewedImage() throws Exception {
logger.info("doOCR on a skewed PNG image");
File imageFile = new File(this.testResourcesDataPath, "eurotext_deskew.png");
BufferedImage bi = ImageIO.read(imageFile);
ImageDeskew id = new ImageDeskew(bi);
double imageSkewAngle = id.getSkewAngle(); // determine skew angle
if ((imageSkewAngle > MINIMUM_DESKEW_THRESHOLD || imageSkewAngle < -(MINIMUM_DESKEW_THRESHOLD))) {
bi = ImageHelper.rotateImage(bi, -imageSkewAngle); // deskew image
}
String expResult = "The (quick) [brown] {fox} jumps!\nOver the $43,456.78 <lazy> #90 dog";
String result = instance.doOCR(bi);
logger.info(result);
assertEquals(expResult, result.substring(0, expResult.length()));
}
à partir de 2012, cette page est maintenant le coup en haut pour cette recherche sur Google. –
@IanMcLaird Hee hee. C'est merveilleusement circulaire. Avez-vous déjà essayé de rechercher "récursivité" sur Google? –