Я хочу повернуть изображение, используя OpenCV/EmguCV. Я нашел алгоритм вращения, который я хочу реализовать, но результат не совсем такой, какой я хочу. Может быть, кто-то может посмотреть.Алгоритм вращения EmguCV не работает
Мой код:
static void Main(string[] args)
{
Mat image = CvInvoke.Imread("C:\\Users\\Leon\\Downloads\\a.jpg", LoadImageType.Grayscale);
int height = image.Height;
int width = image.Width;
//Convert to Matrix
Matrix<Byte> matrix = new Matrix<Byte>(image.Rows, image.Cols, image.NumberOfChannels);
image.CopyTo(matrix);
Matrix<Byte> newMatrix = new Matrix<Byte>(image.Rows, image.Cols, image.NumberOfChannels);
image.CopyTo(newMatrix);
for (int i = 0; i < matrix.Rows - 1; i++)
{
for (int j = 0; j < matrix.Cols - 1; j++)
{
newMatrix.Data[i, j] = matrix.Data[(byte)(i * Math.Cos(3) - j * Math.Sin(3)), (byte)(i * Math.Sin(3) + j * Math.Cos(3))];
}
}
CvInvoke.Imshow("abc", newMatrix);
CvInvoke.WaitKey(0);
}
}
Оригинальное изображение:
Мой результат:
Если кто-то может указать на то, что я делаю неправильно, Я был бы очень благодарен! :)
Не можете использовать метод транспонирования? –
Это упражнение, которое я должен сделать для курса в моем университете, поэтому мне нужно реализовать алгоритм с нуля, и мне не разрешено использовать встроенные функции/методы. –
В цветном изображении каждый пиксель состоит из 3 байтов R, G, B. Вы игнорируете этот факт. – MBo