抗锯齿圆圈在 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.FILLED
和lineType=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()
这似乎是一个常见的 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.FILLED
和lineType=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()