python cv2.circle子像素绘图

2024-05-16 13:32:33 发布

您现在位置:Python中文网/ 问答频道 /正文

有人知道如何使用带有亚像素“shift”参数的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 对我来说,它和第一次出现在同一个地方。 干杯


Tags: importnumpy参数shiftasnpzeros像素
2条回答

我今天还没有遇到这个问题(opencv3.1.0)。但是,您必须小心:输入radius也被移动了!因此,在您的例子中,第二个圆的大小是一半。在

shift参数类似于将所有值乘以(1<;<;shift) 因此,如果要在(199.5199.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)

相关问题 更多 >