Определение угла поворота изображения - C#
Формулировка задачи:
Всем привет! Столкнулся с следующей проблемой: имеется сканированное изображение (после бинаризованное), на котором имеется таблица. Требуется сегментировать эту таблицу и повернуть ее так, что бы она была действительно ровной (под 90 градусов). Вся проблема в этом повороте. Пытался ковырять в сторону Graphics, но все же не получается. Дошел до того, что нужен угол, на который требуется повернуть, но как его вычислить в пикселях, зная координаты черного левого верхнего пикселя и черного нижнего левого пикселя. Буду благодарен за любые мысли по делу.
Graphics g = Graphics.FromImage(bitmap);
Matrix m = new Matrix();
m.RotateAt(-10, new Point(0, 0));
g.Transform = m;
g.DrawImage(bitmap, 10, 10, bitmap.Width, bitmap.Height);Решение задачи: «Определение угла поворота изображения»
textual
Листинг программы
private Bitmap rotateImage(Bitmap b, float angle)
{
//create a new empty bitmap to hold rotated image
Bitmap returnBitmap = new Bitmap(b.Width, b.Height);
//make a graphics object from the empty bitmap
Graphics g = Graphics.FromImage(returnBitmap);
//move rotation point to center of image
g.TranslateTransform((float)b.Width/2, (float)b.Height / 2);
//rotate
g.RotateTransform(angle);
//move image back
g.TranslateTransform(-(float)b.Width/2,-(float)b.Height / 2);
//draw passed in image onto graphics object
g.DrawImage(b, new Point(0, 0));
return returnBitmap;
}