如何使图像中的线条平滑?

时间:2019-10-19 17:22:38

标签: python opencv smoothing

OpenCV是否有办法使边缘平滑,如这张小黑白图像所示?

enter image description here

我尝试了cv2.blurcv2.GaussianBlur,但这只是使图像模糊。我想使线条平滑(如图所示的黑线)。我该怎么办?

3 个答案:

答案 0 :(得分:0)

您可以找到该区域的外部轮廓,然后找到凸包,然后使用抗锯齿线标记将其绘制在新图像上。请参阅适用于python的fillConvexPoly方法。

答案 1 :(得分:0)

您不必在整个图像上运行GaussianBlur,而不必在所需的部分上运行。您可以创建自己的蒙版,或将类似以下内容用作起点:

blur = cv2.GaussianBlur( img, (5,5), 0)
smooth = cv2.addWeighted( blur, 1.5, img, -0.5, 0)

随时尝试使用这些参数。

答案 2 :(得分:0)

使用它,我觉得它非常有效:
Item { Button { id: backButton text: "Go Back" // todo: Figure out how to set this just once at the start of the application property bool promptOnClick: true onClicked: promptOnClick ? cautionDialog.open() : stackView.pop() } Dialog { id: cautionDialog title: "Caution" standardButtons: StandardButton.Ok | StandardButton.Cancel onAccepted: { if (checkboxDisablePrompt.checked) { backButton.promptOnClick = false } stackView.pop() } Row { CheckBox { id: checkboxDisablePrompt checked: false anchors.verticalCenter: parent.verticalCenter } Label { text: "Do not prompt again" anchors.verticalCenter: parent.verticalCenter } } } }