如何在C#中检测两个图像之间的旋转角度?

如何在C#中检测两个图像之间的旋转角度?,c#,image,winforms,image-processing,rotation,C#,Image,Winforms,Image Processing,Rotation,我有两个图像,一个是原始图像,其中有网格,另一个是相同的图像,除了它有数字写在这些网格中,并旋转,我应该找到该图像的旋转角度,这样我可以使它笔直,并识别这些数字写 对于数字,我可能会将它们放在2D像素阵列中并查看模式,但我无法真正理解如何编写代码来检测旋转角度。这里已经回答了这个问题,但我不知道如何将代码翻译成C 此外,我不能使用任何库来为我完成所有这些,我需要从头开始实现算法。我只能使用字节数组和位图类 以下是图片示例: 这个答案只是一个关于应该如何做的想法,而不是使用的确切代码 你可

我有两个图像,一个是原始图像,其中有网格,另一个是相同的图像,除了它有数字写在这些网格中,并旋转,我应该找到该图像的旋转角度,这样我可以使它笔直,并识别这些数字写

对于数字,我可能会将它们放在2D像素阵列中并查看模式,但我无法真正理解如何编写代码来检测旋转角度。这里已经回答了这个问题,但我不知道如何将代码翻译成C

此外,我不能使用任何库来为我完成所有这些,我需要从头开始实现算法。我只能使用字节数组和位图类

以下是图片示例:


这个答案只是一个关于应该如何做的想法,而不是使用的确切代码

你可以做的是通过得到X和Y位置的像素值来“扫描”页面。从左上角开始(实际位置可以从示例图像中确定),从我的示例中第一条红线的位置开始向下扫描,直到找到接近黑色的颜色。记录此位置,并对另一侧执行相同操作。使用这两点,可以计算和

为了减少误报,在找到这些位置后,可以向下跳过X个像素,直到找到下一行,并确保与第一个结果的角度或预期距离相同。(绿色箭头)


如果你能改变这张纸,我建议你加上更大的线来表示行的位置(在每一侧,这样可以找到一个角度),类似于这张图左侧所看到的,这是一个非常好的答案,但是如果我的图像旋转90度呢?有什么算法可以解决这个问题吗?嗯,你可以考虑检查行或边之间的空白,或者看看是否旋转。