我需要找到玉米的图片的方向(如下面的例子),他们有不同的角度向左或向右。 我需要把它们倒(90度角与他们的正常)(当他们看起来像一个水滴)有什么办法,我可以很容易地做到这一点?
Answer 1:
作为出发点-找到图像矩 (胡时刻对于复杂表单像梨)。 从链接:
Information about image orientation can be derived by first using the
second order central moments to construct a covariance matrix.
我怀疑某些图像处理库一样的OpenCV的使用可以给在通常情况下更可靠的结果
Answer 2:
从我得到的印象是,你在这个新秀的OP,所以我坚持的东西很简单:
计算图像的边界框
很简单的通过所有像素,并记住
min,max
的x,y
非背景像素的坐标计算关键尺寸
只投通过边界框计算红点的位置几行。 所以,选择启动点,我选择
25%,50%,75%
的高度。 首先从左侧开始和停止在第一个非背景像素。 然后从右上启动和停止第一个非背景像素。轴对准的位置
开始旋转了一些步骤图像记得那里的红点是对称的位置/停止所以他们几乎是从左,右相同的距离。 另外,边框具有最大高度和最小宽度在轴线对准位置,所以你也可以利用这一点,而不是...
确定位置
你有4个选项,如果我打电话的距离
l0,l1,l2,r0,r1,r2
-
l
左指,r
右指 -
0
是上(带蓝色的)线,1
中间,2
底部
然后你想位置是如果
(l0==r0)>=(l1==r1)>=(l2==r2)
和边界框是在更大y
轴线然后在x
轴,因此通过旋转90
度,直到找到匹配或直接从距离确定方向和旋转只有一次...-
[笔记]
您将需要访问图像的像素,所以我强烈建议您使用Graphics::TBitmap
从VCL。 看看这里GFX用C特地部分GDI的位图 ,并在这个高海拔的照片找到地平线可能会有点帮助。
我使用C ++和VCL所以你必须转换为帕斯卡但VCL的东西是一样的...
文章来源: how to find orientation of a picture with delphi