📜  使用 pthon 从 pic 中删除 bg - Python (1)

📅  最后修改于: 2023-12-03 14:49:45.076000             🧑  作者: Mango

使用 Python 从图片中删除背景

在这个指南中,我们将介绍如何使用 Python 和 OpenCV 库从图片中删除背景。这是一项非常有用的技能,可用于各种应用程序,例如计算机视觉、图像处理和机器学习。

依赖项

在我们开始之前,我们需要确保已安装以下依赖项:

  • Python 3.x (https://www.python.org/downloads/)
  • OpenCV-Python (https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html)
  • NumPy (http://www.numpy.org/)

为确保您已经安装了这些依赖项,请在终端中运行以下命令:

python --version
pip install opencv-python numpy

如果您的 Python 版本在 3.x 之前,则应使用以下命令安装 NumPy:

pip install numpy==1.19.3
步骤
  1. 加载图像

要从图像中删除背景,我们需要先加载图像。使用 OpenCV 库的 cv2.imread() 方法。

import cv2

# Load the image
img = cv2.imread('image.png')
  1. 调整大小

在处理图像时,我们通常会将其缩放到适当的大小。您可以使用 OpenCV 的 cv2.resize() 方法。

import cv2

# Load the image
img = cv2.imread('image.png')

# Resize the image
img = cv2.resize(img, (640, 480), interpolation=cv2.INTER_AREA)
  1. 删除背景

现在我们已经准备好从图像中删除背景了。要做到这一点,我们将使用基于颜色的分割技术,其中我们将在图像中查找特定颜色的像素,并将这些像素标记为背景像素。

import cv2
import numpy as np

# Load the image
img = cv2.imread('image.png')

# Resize the image
img = cv2.resize(img, (640, 480), interpolation=cv2.INTER_AREA)

# Convert the image to HSV color space
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# Define the range of colors to be considered as the background
lower_bound = np.array([0, 0, 0])
upper_bound = np.array([255, 255, 100])

# Create a mask for the background pixels
mask = cv2.inRange(hsv, lower_bound, upper_bound)

# Apply the mask to the original image to remove the background
result = cv2.bitwise_and(img, img, mask=mask)
  1. 显示结果

最后,我们可以使用 OpenCV 的 cv2.imshow() 方法显示结果。

import cv2
import numpy as np

# Load the image
img = cv2.imread('image.png')

# Resize the image
img = cv2.resize(img, (640, 480), interpolation=cv2.INTER_AREA)

# Convert the image to HSV color space
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# Define the range of colors to be considered as the background
lower_bound = np.array([0, 0, 0])
upper_bound = np.array([255, 255, 100])

# Create a mask for the background pixels
mask = cv2.inRange(hsv, lower_bound, upper_bound)

# Apply the mask to the original image to remove the background
result = cv2.bitwise_and(img, img, mask=mask)

# Display the result
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
结论

使用 Python 和 OpenCV 库,我们可以轻松删除图像的背景。本指南介绍了如何加载图像、调整大小、删除背景并显示结果,以及所需的所有 Python 代码。希望这个指南对你有帮助!