基于Python+Opencv实现改变logo颜色

1.基于Python+Opencv实现改变logo颜色

1.1.需掌握的Opencv基础知识

  1. 图片读取
  2. 颜色通道的改变
  3. 全局二值化
  4. 颜色通道的分离
  5. 颜色通道的融合(这个除了涉及到BGR三颜色通道外,还涉及到alpha通道)
  6. 图片保存

1.2.相关Opencv的API使用

  1. 读取图片–imread(filename)

    filename:输入图片的相对路径或绝对路径

  2. 改变颜色通道–cvtColor(src,code)

    本博客的颜色通道偏码,即code包括:COLOR_BGR2GRAY和COLOR_GRAY2BGR

  3. 全局二值化–threshold(src,thresh, maxval, type[, dst])

    thresh:设定阈值
    maxval:设置最大值,一般为255
    type:THRESH_BINARY,该二值化的方式,若像素值大于阈值,则像素变为255,否则变为0
    返回值:阈值(retval)和目标图片(dst)

  4. 分离颜色通道–split(m)

    m:输入通道数大于1的图片
    返回值为mv,即通道数

  5. 融合颜色通道–merge(mv)

    mv:输入需要融合的颜色通道数,是一个元组或列表
    dst:返回处理后得到的图片

  6. 保存图片–imwrite(filename,img)
    filename:保存路径
    img:输入需要保存的图片

1.3.code实现步骤

  1. 图片读取
  2. 将彩色图转换为灰度图
  3. 使用全局二值化
  4. 将灰度图转化为三颜色通道,是为了第4颜色通道作准备,即alpha通道,目的是将黑背景去掉
  5. 分离通道
  6. 融合通道
  7. 展示图片
  8. 图片保存
  9. 摧毁窗口,结束
import cv2
#读取图片
img = cv2.imread("fs.png")
#灰度处理,是为了将logo的颜色变为白色
dst = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#二值化处理
ret,dst = cv2.threshold(dst,60,255,cv2.THRESH_BINARY)
#彩图处理
dst3 = cv2.cvtColor(dst,cv2.COLOR_GRAY2BGR)
#分离通道
b, g, r = cv2.split(dst3)
#通道融合
rgba = (b, g, r, dst)
dst4 = cv2.merge(rgba)
#展示结果
cv2.imshow("img",img)
cv2.imshow("dst",dst)
cv2.imshow("dst4",dst4)
#图片保存
cv2.imwrite("fs_result.png",dst4)
#摧毁窗口,结束
cv2.waitKey(0)
cv2.destroyAllWindows()

1.4. 结果输出展示

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

dst4窗口虽然展示的是黑色背景,但其实它是一个4通道图像,已经使用alpha通道处理过了,最终在保存路径中可以看到的是一个白色logo,透明背景的目标图像,效果如下:
在这里插入图片描述
若要转载,请注明出处,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小叶MW

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

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

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

打赏作者

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

抵扣说明:

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

余额充值