我想使用 OpenCV 实现以下功能(我将在帖子底部发布我的尝试)。我知道OpenCV有这样的功能,但我想尝试自己编写。
在宽度为width
和高度为height
的图像(Mat)(坐标系位于左上角,因为它是图像)中,我想显示已填充< / strong> ellipse具有以下属性:
它应该以{{1}}
图像应为二进制,因此对应椭圆的点的值应为1,其他点应为0
椭圆应该围绕原点旋转(width/2, height/2)
弧度(或度,这并不重要,我可以转换)
椭圆:半长轴参数为angle
,半短轴参数为a
,这两个参数也代表图片中这些轴的大小,因此&#34 ;无论如何&#34; b
和width
,椭圆的主轴大小为height
,短轴的大小为2*a
好的,所以为了我的目的,我找到了一个与此类似的方程式(https://math.stackexchange.com/a/434482/403961)。我的代码如下......它似乎在旋转方面做得很好,但遗憾的是,根据旋转角度,SIZE(长轴,不确定次要)明显增加/减少,这是不正常的因为我希望它具有相同的尺寸,与旋转角度无关。
注意当角度为45或-45度时,看起来最大尺寸,对于像-90,0,90这样的角度,最小尺寸。
代码:
2*b
答案 0 :(得分:1)
令人讨厌的错字潜入了你的不平等。第一个加数必须是
sqr((x - center.x) * cos(angle) + (y - center.y) * sin(angle)) / sqr(a)
请注意加号符号,而不是减号。