OpenCV/EmguCV를 사용하여 이미지를 회전하고 싶습니다. 구현하고자하는 회전 알고리즘을 찾았지만 원하는 결과가 아니 었습니다. 어쩌면 누군가가 볼 수 있습니다.EmguCV Rotation 알고리즘이 작동하지 않습니다.
내 코드 :
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