gpt4 book ai didi

c# - 如何在 Emgu CV 中实现 "rotate-algorithm"?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:18:32 26 4
gpt4 key购买 nike

我目前正在使用 C# 在 EmguCV 中实现一个算法,这意味着我不想使用 EmguCV 附带的内置旋转功能。

我已经找到了我想要实现的算法,但我对如何实现它有点困惑。主要问题是,我不知道如何指定矩阵的 X 和 Y 值才能进行预期的计算。

旋转算法: http://i.stack.imgur.com/hQMxF.jpg

现在我的代码是这样的:

static void Main(string[] args) {
Mat image = CvInvoke.Imread("C:\\Users\\Leon\\Desktop\\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++)
{

}
}

CvInvoke.Imshow("abc", matrix);
CvInvoke.WaitKey(0);

}

但正如我所说,我对如何实现该算法存有疑问。我的计划是旋转“矩阵”中的像素并将它们存储在“newMatrix”中,但我不知道如何指定矩阵的 X 和 Y 值。

也许有人可以帮助我。

编辑:这里有人建议这个答案:“How can I get and set pixel values of an EmguCV Mat image?”将是我问题的答案。但事实并非如此。我知道我可以做 Math.Cos 和 Math.Sin 但我不知道如何在我的矩阵中指定 X 和 Y。我在访问矩阵中的数据时没有问题。

最佳答案

如果你想旋转一个点 (x,y) 关于某个点 (cx,cy) 给定附图中的矩阵:

class Program {
/**
* @param x coordinate of point want to rotate
* @param y coordinate of point want to rotate
* @param cx x coordinate of point you want to rotate about
* @param cy y coordinate of point you want to rotate about
* @return the result of rotation {x,y}
*/
static double[] rotate(double x, double y, double cx, double cy, double angle) {
double cos_a = Math.Cos(angle);
double sin_a = Math.Sin(angle);

// move to origin
x -= cx;
y -= cy;

// rotate and then move back
return new double[] {
x*cos_a - y*sin_a + cx,
x*sin_a + y*cos_a + cy
};
}


static void Main(string[] args) {
double x = 1;
double y = 0;
double a = Math.PI / 2;

double[] r = rotate(x, y, 0, 0, a);
Console.WriteLine("new x = " + r[0]);
Console.WriteLine("new y = " + r[1]);
}
}

关于c# - 如何在 Emgu CV 中实现 "rotate-algorithm"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39911727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com