使用openCV或PIL库修改图片的颜色

为什么要修改颜色,因为甲方不让我们自己喜好上颜色

比如一张图,长这样,我夸张一点,,但是效果比较好判断

 

1、把绿色去掉

img = cv2.imread("img.jpg") #用cv2读取照片
img = cv2.resize(img, (416, 416)) # 原图太大,这边resize一下
img[:, :, 1] = 0 # Green在第1通道,BGR有G的都置为0

 

这里发现原本黄色的也没了,还变成了红色,因为黄色的RGB为(255,255,0),所以G通道也是存在的,被置0后RGB从

(255,255,0)-----  (255, 0 , 0)红色

2、把红色去掉

同理

img = cv2.imread("img.jpg")
img = cv2.resize(img, (416, 416))
img[:, :, 2] = 0  #这边把红色通道置为0,因为是BGR所以红色是第2通道,如果想转RGB,    cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

紫色(255, 0 ,255)-------  (0, 0, 255)蓝色

黄色(255,255 ,0)-------  (0,255, 0 )绿色

3、把红色和绿色都去掉

img = cv2.imread("img.jpg") #用cv2读取照片
img = cv2.resize(img, (416, 416)) # 原图太大,这边resize一下
img[:, :, (1, 2)] = 0 # 小括号中括号效果一样

4、根据某个rgb的值筛选颜色

例如:只删除红色,其他不变:

img = cv2.imread("img.jpg")
img = cv2.resize(img, (416, 416))
for i in img:
    for j in i:#遍历每个像素点
        if j[0] == 0 and j[1] == 0 and j[2] == 255:
            j[0] = 0
            j[1] = 0
            j[2] = 0
 cv2.imshow("img", img)
 cv2.waitKey(0)

不光适用于==,给一个范围用< >也可以 

这种方法对于图片小的运算速度还行,要是图很大,几百万个像素,速度不行 

本人比较懒opencv写的简单,PIL之后补充

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值