【opencv-py-像素数据替换】

图片指定颜色替换

关键词: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()

代码处理前后图片对比(电脑主题为黑色,所以处理后的显示为黑色,实际图片背景颜色为白色纯透明):
example

示例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()

代码运行效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shake boom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值