Очистите монохромное изображение с помощью Imagemagik в iOS

Я пытаюсь создать код, который позволяет мне очищать изображения для чтения и механизма OCR. Пока мне не удалось многого добиться. Установите Imagemagink только в моем проекте iOS и используйте некоторые функции API для создания изображения в оттенках серого.

То, что я пытаюсь достичь, выглядит примерно так:

convert \( $infile -colorspace gray -type grayscale -contrast-stretch 0 \) \ \( -clone 0 -colorspace gray -negate -lat ${filtersize}x${filtersize}+${offset}% -contrast-stretch 0 \) \ -compose copy_opacity -composite -fill "$bgcolor" -opaque none +matte \ -deskew 40% -sharpen 0x1 \ $outfile

Теперь проблема в том, что я не смог воспроизвести это в своем коде. Итак, мои вопросы:

  1. Кто-нибудь знает способ использования метода «ConvertImageCommand()», используя UIImage в качестве входных данных вместо пути к файлу? (Пример здесь: http://www.imagemagick.org/discourse-server/viewtopic.php?t=25704)

  2. В качестве альтернативы и продолжайте работать с моим фактическим кодом, может ли кто-нибудь указать мне правильное направление преобразования приведенной выше команды в метод API для завершения кода ниже? До сих пор я обнаружил, что параметр "-lat" эквивалентен в API: "MagickAdaptiveThresholdImage()"

с уважением,

-(UIImage *)drawMonochromeImage:(UIImage *)image
{
    // Create temporary file
    NSString *tempFilePath = [NSTemporaryDirectory()
                              stringByAppendingPathComponent:@"temp.jpg"];

    MagickWandGenesis();
    MagickWand *wand = NewMagickWand();
    NSData *data = UIImagePNGRepresentation(image);
    MagickReadImageBlob(wand, [data bytes], [data length]);

    // Monochrome image
    //MagickQuantizeImage(wand,2,GRAYColorspace,1,MagickFalse,MagickFalse);


    MagickDespeckleImage(wand);
    MagickEnhanceImage(wand);

    MagickQuantizeImage(wand,256,GRAYColorspace,0,MagickFalse,MagickFalse);
    MagickBrightnessContrastImage(wand,-40,30);

    // Write to temporary file
    MagickWriteImage(wand,
                     [tempFilePath cStringUsingEncoding:NSASCIIStringEncoding]
                     );

    // Load UIImage from temporary file
    UIImage *imgObj = [UIImage imageWithContentsOfFile:tempFilePath];

    // Display on device
    return imgObj;
   // [self.imageView setContentMode:UIViewContentModeScaleAspectFit];
}

person tomcontr    schedule 22.12.2014    source источник
comment
возможный дубликат Использование C API для ImageMagick (на iPhone?) для преобразования в монохромный?   -  person emcconville    schedule 22.12.2014
comment
Мне удалось использовать код в этом сообщении и заставить его работать, передавая UIImage вместо файла, а затем возвращая UIImage. Я также добавил две другие функции для улучшения изображения и B&C. Это работает, но теперь мне нужно сделать что-то подобное (код ниже), но просто используя API, а не инструмент преобразования: convert \( $infile -colorspace gray -type grayscale -contrast-stretch 0 \) \ \( -clone 0 -colorspace gray -negate -lat ${filtersize}x${filtersize}+${offset}% -contrast-stretch 0 \) \ -compose copy_opacity -composite -fill "$bgcolor" -opaque none +matte \ -deskew 40% -sharpen 0x1 \ $outfile   -  person tomcontr    schedule 22.12.2014
comment
Большой! Пожалуйста, обновите свой вопрос, указав дополнительные сведения, и уточните проблему до минимального вопроса.   -  person emcconville    schedule 22.12.2014


Ответы (1)


Наконец, я смог использовать функцию «ConvertImageCommand()» API ImageMagick для C, а затем использовал этот код для создания изображения с превосходными результатами!.

char *argv[] = {"convert","-respect-parenthesis","\(", input, "-set", "-colorspace", "RGB", "-colorspace", "gray", "-type", "grayscale","-colorspace","RGB", "-normalize","\)","\(","-clone", "0","-set","-colorspace", "RGB","-colorspace","gray","-negate", "-lat", "15x15+5%", "-contrast-stretch", "0","\)","-compose","copy_opacity","-composite","-fill","white","-opaque","none","+matte", output, NULL};

Я надеюсь, что это может быть полезно для кого-то.

С уважением,

person tomcontr    schedule 24.12.2014