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);
}
}
原画:
マイ結果:
誰かが私が間違ってやっているのかを指し示すことができた場合は、私はとても感謝しています! :)
あなたはトランスポーズ方式を使用していますか? –
私の大学のコースでは練習が必要なので、最初からアルゴリズムを実装する必要があり、組み込み関数/メソッドを使用することはできません。 –
カラーピクチャでは、すべてのピクセルがR、G、Bの3バイトで構成されています。あなたはこの事実を無視しています。 – MBo