You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用OpenCV与Python将图像白色背景像素转为黑色

解决方案:将Otsu阈值处理后的图像背景白色转为黑色

针对Otsu二值化后的图像,根据前景/背景的像素分布,提供三种实用处理方式:


场景1:背景为白色、前景为黑色(最常见)

如果你的图像是背景白(255)、前景黑(0),直接反转像素值就能实现背景转黑、前景转白(突出目标):

import cv2

# 读取Otsu处理后的二值灰度图
img = cv2.imread("your_thresholded_image.png", cv2.IMREAD_GRAYSCALE)
# 反转像素:白色→黑色,黑色→白色
processed_img = 255 - img
# 保存结果
cv2.imwrite("background_black_result.png", processed_img)

场景2:仅需将所有白色像素转为黑色

如果不需要保留白色前景(或前景无白色),直接批量替换像素值:

import cv2
import numpy as np

img = cv2.imread("your_thresholded_image.png", cv2.IMREAD_GRAYSCALE)
# 将所有白色像素(255)替换为黑色(0)
img[img == 255] = 0
cv2.imwrite("background_black_result.png", img)

如果背景存在浅灰噪点,可先做阈值过滤再替换:

# 先过滤浅灰,确保仅识别纯背景白色
_, binary_mask = cv2.threshold(img, 240, 255, cv2.THRESH_BINARY)
img[binary_mask == 255] = 0

场景3:前景为白色、需精准区分背景和前景

如果前景是白色,要避免误转前景,可通过轮廓检测精准保留前景、替换背景:

import cv2
import numpy as np

img = cv2.imread("your_thresholded_image.png", cv2.IMREAD_GRAYSCALE)
# 提取最外层前景轮廓
contours, _ = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 创建全黑画布
result = np.zeros_like(img)
# 填充前景轮廓为白色(保留原前景)
cv2.drawContours(result, contours, -1, 255, thickness=cv2.FILLED)
cv2.imwrite("background_black_result.png", result)

内容的提问来源于stack exchange,提问作者Abdul Samad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:55:42