opencv - 如何找到两个二进制图像之间的旋转

我需要找到两个二进制图像之间的旋转 Angular 。所以我可以通过将图像旋转指定 Angular 来校正旋转。有人可以帮忙吗?

我已经尝试过主轴旋转 Angular ,但是无法给出准确的结果。有人可以建议我一种更好的方法。这个图像可以是任何东西。不必是我在这里上传的图片。但是所有图像都是二进制的。

最佳答案

对于每个图像

  • 阈值图像,以使对象像素不为零,背景像素为零。
  • 查找非零像素的凸包(您可以使用任何方法来减少用于计算凸包的点数,例如首先找到轮廓。主要思想是查找凸包)
  • 使用minAreaRect计算最小面积矩形,它将返回RotatedRect对象(在C++中)。该对象包含旋转角
  • 求差

  • 注意:尽管对象旋转不同,但如果以某种方式得到的最小面积矩形返回相同的 Angular ,则此方法将无效。因此,我觉得最好使用其他度量方法(例如填充的凸包的矩)来计算旋转:http://en.wikipedia.org/wiki/Image_moment

    https://stackoverflow.com/questions/24325867/

    相关文章:

    opencv - 检测图像中的标记以用于OpenCV中的透视变换

    opencv - BackgroundSubtractorMOG2 阴影检测在阳光充足的场景中不起作

    python - 如何在python中使用opencv在图像上显示轴

    python - 用向量作为numpy中的条目迭代矩阵的最快方法

    opencv - 从 OpenCV 中的边获取多边形

    python - 从我的Python代码返回Opencv Mat类型

    python - 使用 Python 和 Matplotlib 将立体图像和深度图转换为 3D 散点

    opencv - 在Cygwin上安装Opencv

    opencv - 填充轮廓时,drawContours函数在OpenCV中如何工作?

    opencv - 光流和手指跟踪