抗锯齿圆圈在 opencv 中呈锯齿状

anti-aliased circle is jagged in opencv

这似乎是一个常见的 OpenCV 圆配方,它会为正在绘制的圆产生真正锯齿状的边缘。这是最低限度可行的可重现代码:

import cv2
import numpy as np

image = np.zeros((512,512,3), np.uint8) 
cv2.circle(image, (350, 350), 200, (15,75,50), cv2.FILLED)
cv2.imshow("Circle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在非实心圆的情况下(使用lineType=cv2.LINE_AA时)可能会好一点:

但有时画出既实心又有圆周边缘的圆圈是很好的。

我想知道是否可以在使用 OpenCV 的框架内改进这个结果,尽管 OpenCV 可能不会试图成为一个像素完美的绘图库。

提前感谢您的帮助,因为我缩小了我在 OpenCV 和 Pyglet 之间的选择范围,以实现某种带有图形的计算机视觉 实现。而且还因为即使只是在一些 OpenCV 负载应用程序中随意使用形状绘图,也能拥有视觉上令人愉悦的传统形状会很好。

在同一个调用中使用thickness=cv.FILLEDlineType=cv.LINE_AA

您应该始终查阅您使用的技术的文档。

import cv2
import numpy as np

image = np.zeros((512,512,3), np.uint8) 
cv2.circle(image, (350, 350), 200, (15,75,50), thickness=cv2.FILLED, lineType=cv2.LINE_AA)
cv2.imshow("Circle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()