Повернуть изображение из определенной точки, а не по центру c # - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть несколько изображений, подобных приведенному ниже, где я хочу повернуть их несколько раз для распознавания текста.10 градусов каждый раз.

Проблема, с которой я столкнулся сейчас, заключается в том, что я могу поворачивать изображения из центра, однако черная буква всегда находится в случайной точке на изображении.Поэтому, хотя я могу еще раз повернуть его на 10 градусов, и он обычно исчезает с изображения.

Как я могу повернуть изображение ниже от центра того места, где в данный момент находится буква?

Имейте в виду, что его местоположение случайное.

Это код, который я сейчас использую для вращения

Bitmap rotatedImage = new Bitmap(bmp.Width, bmp.Height);
using (Graphics g = Graphics.FromImage(rotatedImage))
{
    // Set the rotation point to the center in the matrix
    g.TranslateTransform(bmp.Width / 2, bmp.Height / 2);
    // Rotate
    g.RotateTransform(angle);
    // Restore rotation point in the matrix
    g.TranslateTransform(-bmp.Width / 2, -bmp.Height / 2);
    // Draw the image on the bitmap
    g.DrawImage(bmp, new System.Drawing.Point(0, 0));
}

return rotatedImage;

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

        float limit = 0.1f;

        int x = 0;
        int y = 0;

        bool done = false;

        for (int i = 0; i < bmp.Width; i++)
        {
            if (done) break;

            for (int j = 0; j < bmp.Height; j++)
            {
                if (done) break;

                System.Drawing.Color c = bmp.GetPixel(i, j);

                if (c.GetBrightness() < limit)
                {
                    x = i; y = j; done = true;
                }
            }
        }

Однако, когда я использую это местоположение в коде поворота, я просто получаю пустое белое изображение.

Изображение, содержащеебуква

enter image description here

...