【发布时间】:2021-12-31 04:50:04
【问题描述】:
上下文:我正在尝试从指南针的小图像中找到方向。定向航向表示如果红色(北)点从顶部逆时针旋转 90 度,则观察者面向东,180 度是南,270 是西,0 是北。等等。我知道这么小的模糊图像存在局限性,但我希望尽可能准确。指南针覆盖在街景图像上,这意味着背景嘈杂且不可预测。
我想到的第一个策略是找到离中心最远的红色像素,并从中计算方向航向。数学很简单。
对我来说,最困难的部分是将红色像素与其他像素区分开来。特别是因为几乎任何颜色都可以在背景中。
我的第一个想法是将完全透明的部分涂黑,以消除除白色透明环和指南针尖端之外的所有内容。
True Compass Values: 35.9901, 84.8366, 104.4101
These values are taken from the source code.
然后我使用this solution 来查找最接近用户给定颜色列表的 RGB 值。校准颜色列表后,我能够创建一个列表,找到一些指南针最内部的像素。这在 +/- 3 度内产生了正确的结果。但是,当我尝试更改列表以包含红色指南针尖端的每个像素时,会有一些背景像素被注册为“红色”,因此会打乱计算。
我已经使用 this tool 手动找到了提示的结尾,结果总是在 +/- 1 度(大多数情况下为 0.5)内结束,所以我希望这应该是可能的
指南针中红色的原始 RGB 值是 (184, 42, 42) 和 (204, 47, 48),但图像来自视频的屏幕截图,导致尖端/边缘像素模糊和发黑/灰色。
有没有比最接近的颜色()方法更好的方法?如果是这样,如果不是,我该如何校准可以使用的颜色列表?
【问题讨论】:
-
图像中的指南针是否总是相同的大小......我的意思是它总是图像总宽度的 1/16 还是这样的?
-
有趣。您能否提供这三张图像的未涂黑版本,用于测试目的?此外,除非我遗漏了什么,否则您的文字将角度描述为从北顺时针方向增加,但您标记的示例是逆时针方向。
标签: python python-imaging-library