在绘制轮廓时,可能会出现靠在图片边缘的图形轮廓没有被完整绘制的情况。这是因为轮廓检测算法在处理边缘像素时会出现问题。为了解决这个问题,可以通过添加一个边框或者对图像进行填充的方式来保证轮廓的完整性。

下面是一个示例代码,演示如何使用OpenCV库对图像进行边框处理,然后绘制完整的轮廓:

import cv2

# 读取图片
img = cv2.imread('example.jpg')

# 将图片变成灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 对图像进行边框处理,添加10像素的白边
gray = cv2.copyMakeBorder(gray, 10, 10, 10, 10, cv2.BORDER_CONSTANT, value=[255, 255, 255])

# 进行轮廓检测
contours, hierarchy = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 绘制轮廓
cv2.drawContours(img, contours, -1, (0, 0, 255), 2)

# 显示结果
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这个示例中,我们使用了cv2.copyMakeBorder函数来给图像添加了一个10像素的白边。这样就可以保证轮廓检测算法能够正确处理边缘像素了。然后,我们使用cv2.drawContours函数来绘制检测到的轮廓。最后,我们展示了结果图像。

需要注意的是,添加边框的方式并不是唯一的解决方法。另外一种常用的方法是对图像进行填充,即使用cv2.floodFill函数来将图像内部的空洞填充好。这样也可以保证轮廓的完整性。

如何用Python绘制轮廓时将靠在图片边缘的图形的轮廓也绘制进去

原文地址: https://www.cveoy.top/t/topic/boo1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录