You are not logged in.

Dear visitor, welcome to QtForum.org. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

M. Bashir

Beginner

  • "M. Bashir" is male
  • "M. Bashir" started this thread

Posts: 7

Location: Aleppo, Syria

  • Send private message

1

Thursday, November 26th 2009, 8:10am

convert to monochrome

Hi All,

It's easy to convert any image to monochrome format by using QImage::convertToFormat like this:

Source code

1
pImage.convertToFormat(QImage::Format_Mono, Qt::MonoOnly|Qt::ThresholdDither|Qt::AvoidDither);

but convertToFormat always guessing that the value of conversion's threshold is 255 where in some cases we need to use another threshold's value. I checked out GIMP and I noticed that it uses an automatic method for guessing threshold's value (see the example below) so I'm wondering:

How I can convert images to monochrome format by using auto threshold's value just like GIMP conversion method?

Original


QImage conversion


Automatic GIMP conversion



P.S

I've wrote a stupid function for converting images to monochrome by using a specified threshold's value as following but I need to know how I can automatically specify threshold's value:

Source code

1
2
3
4
5
6
7
8
9
10
QImage getThresholdBW(QImage pImage, int threshold)
{
    QImage result = pImage;
    result.fill(255);
    for(int x=0; x<pImage.width(); x++)
        for(int y=0; y<pImage.height(); y++)
            result.setPixel(x, y, qGray(pImage.pixel(x, y))>threshold?qRgb(255, 255, 255):qRgb(0, 0, 0));

    return result;
}