图片指定颜色替换
关键词:opencv python 图像处理
示例1:将白色背景替换为纯透明的的背景
将一下图片背景白色部分替换成白色纯透明背景
import matplotlib.pyplot as plt # plt 用于显示图片
import numpy as np
import cv2
import os
import datetime
import tkinter as tk
from PIL import Image #PIL 图片处理库
from tkinter import filedialog
from tkinter import messagebox
img = cv2.imread('R-C.bmp', cv2.IMREAD_UNCHANGED)
img = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# img = cv2.imread('page_1.png', cv2.IMREAD_UNCHANGED)
h = img.shape[0]
w = img.shape[1]
for x in range(w):
for y in range(h):
if gray[y, x] > 200:#根据gray阶数判断,不同颜色需要具体调
img[y, x] = [255,255,255,0] # 白色
cv2.imwrite('R-C-1.png', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
代码处理前后图片对比(电脑主题为黑色,所以处理后的显示为黑色,实际图片背景颜色为白色纯透明):
示例2:将红色区域块替换成黄色不透明块
'''
Description:
Author: wentao
Date: 2023-11-28 16:19:26
LastEditors: Do not edit
LastEditTime: 2023-11-28 16:48:29
FilePath: \alpha_change\alpha_change_ex.py
'''
import matplotlib.pyplot as plt # plt 用于显示图片
import numpy as np
import cv2
import os
import datetime
import tkinter as tk
from PIL import Image #PIL 图片处理库
from tkinter import filedialog
from tkinter import messagebox
img = cv2.imread('R-C.bmp', cv2.IMREAD_UNCHANGED)
img = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# img = cv2.imread('page_1.png', cv2.IMREAD_UNCHANGED)
h = img.shape[0]
w = img.shape[1]
for x in range(w):
for y in range(h):
# if gray[y, x] > 200:
r = img[y, x, 2] # 取得該像素的紅色值
g = img[y, x, 1] # 取得該像素的綠色值
b = img[y, x, 0] # 取得該像素的藍色值
if r > 200 and g < 200 and b < 200: #图片RGB不为255,实际具体判断
img[y, x] = [0,255,255,255] # 白色
cv2.imwrite('R-C-2.png', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
代码运行效果: