白底图片转换为蓝底图片

import cv2
import numpy as np

# 1、读取照片
img=cv2.imread(r'C:\Users\Desktop\123.jpg')
rows,cols,channels = img.shape
cv2.imshow('img',img)


# 2、图片的二值化处理
### 二值化处理将图片转为黑白两色,但因为本来就是白底照片,因此在设置颜色上需要调整。
### lower~upper之间的值将变成255(纯白)  其他均变为0(纯黑)
lower = np.array([251,251,251])
upper = np.array([256,256,256])
mask = cv2.inRange(img, lower, upper)
cv2.imshow('mask',mask)


# 3、图像的腐蚀膨胀
# kernel = np.ones((2, 2), np.uint8)   这里经过测试选择None代替kernel
erode=cv2.erode(mask,None,iterations=1)  #进行腐蚀操作
cv2.imshow('erode',erode)

### dilate进行膨胀操作,iterations=3是为了将白色区域增强,否则换背景色时会出现裸漏色
dilate=cv2.dilate(erode,None,iterations=3)
cv2.imshow('dilate',dilate)

# 4、遍历替换底色
for i in range(rows):
    for j in range(cols):
        if dilate[i,j]==255: # 像素点255是白色
            img[i,j]=(219,142,67) # 此处替换颜色,为BGR通道,不是RGB通道
cv2.imshow('red',img)

# 窗口等待的命令,0表示无限等待
# cv2.waitKey(0)

# 5、保存图片
cv2.imwrite(r'C:\Users\Desktop\gzq.jpg', img)

<think>我们面对的任务是将图片的白色背景更改为蓝色。这通常涉及图像处理技术,可以使用多种工具和方法,包括专业的图像编辑软件(如Photoshop)、在线工具以及编程实现(如使用Python的PIL或OpenCV库)。以下将分方法介绍:方法一:使用Photoshop(专业桌面软件)打开图片后,选择“快速选择工具”或“魔棒工具”选取白色背景区域。 通过调整容差确保选中大部分白色背景,可使用“选择并遮住”进一步优化选区。新建一个图层,填充蓝色(例如RGB值为0,0,255),并将该图层置于原图层下方。删除或隐藏原始背景,保存为支持透明度的格式(如PNG)或直接覆盖背景。 方法二:使用在线工具(无需安装软件) 访问在线图片编辑网站,如Pixlr、Fotor或Remove.bg(后者专门用于背景移除和替换)。上传图片,使用背景移除工具自动去除背景(对于白色背景通常效果较好)。 然后选择背景替换功能,设置蓝色作为新背景颜色。 下载处理后的图片。 方法三:使用Python和OpenCV(编程实现) 以下代码示例展示了如何使用OpenCV将白色背景替换为蓝色。基本思路是:将白色区域识别出来,然后替换为蓝色。注意,白色可能是一个范围,因此需要设置阈值。 ```pythonimport cv2import numpyas np#读取图片image =cv2.imread('input.jpg')#将图片转换为RGB颜色空间(OpenCV默认读取为BGR) image_rgb= cv2.cvtColor(image,cv2.COLOR_BGR2RGB)#定义白色的范围(这里设定一个阈值,因为纯白可能略有变化) lower_white= np.array([200,200,200])# RGB下限upper_white= np.array([255,255,255])#RGB上限#创建掩膜:在白色范围内的像素为255(白色),否则为0(黑色)mask =cv2.inRange(image_rgb,lower_white,upper_white)#将原图中非白色区域保留(即非背景),白色区域替换为蓝色#创建一个蓝色背景(这里设定蓝色为RGB(0,0,255)) blue_background= np.zeros_like(image_rgb, dtype=np.uint8) blue_background[:]= [0,0,255]#蓝色#将原图中非背景部分提取出来(即mask中为0的部分) foreground =cv2.bitwise_and(image_rgb,image_rgb,mask=cv2.bitwise_not(mask)) #将蓝色背景中背景部分(mask中为255的部分)提取出来background= cv2.bitwise_and(blue_background,blue_background,mask=mask)#合并前景和背景result= cv2.add(foreground,background)#转换回BGR以便OpenCV保存result_bgr= cv2.cvtColor(result,cv2.COLOR_RGB2BGR) cv2.imwrite('output.jpg', result_bgr) ```注意:此代码适用于背景大部分为白色的情况。如果图片中有其他白色物体,也可能被替换,因此可能需要更精确的选区方法(如图像分割)。 方法四:使用手机APP许多手机应用如Snapseed、PicsArt提供背景替换功能。操作步骤类似:导入图片,选择工具中的“背景替换”或“抠图”功能,自动或手动选择背景区域,然后选择蓝色替换。 总结: 选择哪种方法取决于用户的技术背景和需求。专业设计人员可能倾向于Photoshop,开发者可能选择编程实现,而普通用户则适合在线工具或手机APP。 §§相关问题§§: 1.如何用Photoshop将图片背景透明化? 2.有哪些在线工具可以免费更换图片背景颜色? 3.使用Python如何将图片背景替换为透明?</think>要将图片的白色背景更改为蓝色,可通过以下方法实现。根据工具类型分为三类解决方案: --- ### **专业图像软件(Photoshop/GIMP)** 1. **打开图片并创建选区** 使用魔棒工具(容差设为20-30)点击白色背景区域,通过"选择并遮住"优化边缘 反选选区(Ctrl+Shift+I)保护主体 2. **填充新背景** 新建图层置于底层,用油漆桶填充蓝色(RGB: 0,0,255 或 HEX:#0000FF) 删除原始背景层或添加蒙版 3. **导出图片** 保存为PNG格式保留透明边缘 *适用于复杂边缘(如毛发)需结合通道抠图* --- ### **在线工具(无需安装)** 1. **上传图片** 访问 [Remove.bg](https://www.remove.bg/) 或 [Fotor](https://www.fotor.com/) 自动移除背景(对纯白背景效果最佳) 2. **更换背景色** 在编辑界面选择"背景" > "纯色" > 选取蓝色 调整边缘平滑度参数 3. **下载结果** 支持JPG/PNG格式导出 *注意:免费工具有分辨率限制* --- ### **编程实现(Python+OpenCV)** ```python import cv2 import numpy as np # 读取图片 img = cv2.imread('input.jpg') # 定义白色范围 (BGR格式) lower_white = np.array([200, 200, 200]) upper_white = np.array([255, 255, 255]) # 创建掩膜并替换 mask = cv2.inRange(img, lower_white, upper_white) img[mask != 0] = [255, 0, 0] # 替换为蓝色(BGR:255,0,0) # 保存结果 cv2.imwrite('output.jpg', img) ``` **说明**: - 调整`lower_white`值控制颜色敏感度 - 需安装OpenCV库:`pip install opencv-python` - 适用于批量处理或集成到工作流 --- ### **注意事项** - 原始图片中避免主体含白色,否则会被替换 - 复杂背景建议使用AI工具:[Photoroom](https://www.photoroom.com/) - 蓝色值推荐: - 印刷用 CMYK: C100 M0 Y0 K0 - 电子屏 RGB: #0000FF
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值