【发布时间】:2021-11-17 18:52:51
【问题描述】:
我正在创建一个尝试使用 EmguCV 在图像中查找三个点的应用程序。这三个点用于计算我想向用户显示的数字代码的位置。目的是帮助用户缩放和居中该代码,以允许用户轻松阅读它。代码可以有不同的角度,旋转图像以以正确的方向显示代码非常重要。
我在 ScrollView 中显示图像。我正在做的是在 X 和 Y 中按比例滚动,以使图像相对于代码的中心点在代码上居中。当我在不旋转图像的情况下这样做时效果很好,但是当我旋转图像时,我无法计算代码的位置。为了说明问题,我将放两张图片。
在上图中,我们可以看到一个蓝点表示代码中心的去定位。绿色向量表示从图像原点到代码中心的向量。在这种情况下,图像的原点和容器的原点是相同的,所以我可以毫无问题地对代码进行缩放和居中。
为了使代码面向和可读,我需要将整个图像旋转大约 -120º。在上面的图像 (2) 中,黑色方块表示旋转 -120º 的图像,其代码点中心(橙色)和表示其原点的矢量(绿色)。大红色方块代表容器矩形(网格)。问题是我之前用 EmguCv 计算的点中心的原点位于图像的点 (0,0) 中,当我旋转图像时,图像的原点 (0,0) 也会旋转。 所以我想计算与容器原点(黄色矢量)相关的代码中心点(橙色点),以便滚动图像并将其居中以定位在代码上。
为了计算点平移,我使用矩阵,它适用于缩放变换,但由于原点的旋转,不适用于旋转变换。
您需要考虑不能选择剪切和提取代码部分。 OpenCv 库并非总是可以从图像中提取三个点,有时我无法正确计算位置,因此我需要允许用户滚动图像以查找代码。
图像有 2448x2048 像素,比例为 X,Y 3.0,旋转接近 -120º。
有什么建议吗?
【问题讨论】:
-
您能否展示一些您正在使用的数据结构,以便我们尝试使解决方案适合您的框架?
标签: c# geometry trigonometry emgucv