python cv2.circle子像素图

时间:2013-01-31 13:34:12

标签: python opencv computer-vision

有没有人知道如何将cv2.circle与子像素“shift”参数一起使用?

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 对我而言,它与第一个出现在同一个地方。 欢呼声,

2 个答案:

答案 0 :(得分:1)

我今天没遇到这个问题(openCV 3.1.0)。但是你必须要小心:输入radius也会被移动!因此,在您的示例中,第二个圆圈的大小只有一半。

答案 1 :(得分: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)