在图片提取轮廓的过程中,怎样设置代码使得提取后的轮廓为白色背景,且像素信息不会丢失
时间: 2024-05-03 17:19:55 浏览: 12
可以使用OpenCV库中的函数cv2.drawContours()来绘制轮廓。在绘制轮廓之前,可以先创建一个和原图像大小相同的纯白色图像作为绘制轮廓的背景,然后再用cv2.drawContours()函数将轮廓绘制在这个背景上。这样就能保证提取后的轮廓为白色背景,且像素信息不会丢失。
以下是示例代码:
``` python
import cv2
# 读取原图像
img = cv2.imread('image.jpg')
# 转为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 提取轮廓
contours, hierarchy = cv2.findContours(gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 创建纯白色背景
background = 255 * np.ones_like(img)
# 绘制轮廓
cv2.drawContours(background, contours, -1, (0, 0, 0), 2)
# 显示提取后的轮廓图像
cv2.imshow('contours', background)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们使用了numpy库中的函数np.ones_like()来创建和原图像大小相同的纯白色图像。在cv2.drawContours()函数中,我们将绘制的颜色设置为黑色,线宽为2个像素。最后通过cv2.imshow()函数显示提取后的轮廓图像。