有没有人知道如何将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 对我而言,它与第一个出现在同一个地方。 欢呼声,
答案 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)