2

有谁知道如何将 cv2.circle 与子像素“移位”参数一起使用?

import cv2
import numpy as np

i1 = np.zeros((256, 256, 3), np.float32)
cv2.circle(i1, (199,199), 10, (1,0,0), -1)
cv2.imshow('1', i1)
i2 = np.zeros((256, 256, 3), np.float32)
cv2.circle(i2, (199,199), 10, (1,0,0), -1, shift=1)
cv2.imshow('2', i2)

cv2.waitKey(10000)

我希望第二个圆圈中的圆圈位于 (99.5,99.5), 199*(2^-1) = 99.5 对我来说它出现在与第一个相同的位置。干杯,

4

2 回答 2

1

shift 参数就像处理所有乘以 (1 << shift) 的东西。因此,如果您想在 (199.5, 199.5) 处绘制一个圆,您需要执行以下操作:

i2 = np.zeros((256, 256, 3), np.float32)
shift = 3
factor = (1 << shift)
cv2.circle(i2, (int(199.5 * factor + 0.5),int(199.5 * factor + 0.5)), 10 * factor, (1,0,0), -1, shift=shift)
cv2.imshow('2', i2)
于 2018-06-10T11:28:12.370 回答
1

到今天为止我还没有遇到这个问题(openCV 3.1.0)。但是您必须小心:输入radius也会发生变化!因此,在您的示例中,第二个圆圈是大小的一半。

于 2016-01-28T09:22:24.283 回答