添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
备案 控制台
学习
实践
活动
专区
工具
TVP
写文章
专栏首页 OpenCV与AI深度学习 OpenCV技巧 | 常用格式图片保存为透明背景图片(附Python源码)-教你轻松制作Logo
4 0

海报分享

OpenCV技巧 | 常用格式图片保存为透明背景图片(附Python源码)-教你轻松制作Logo

导读

本文主要介绍使用OpenCV将常用格式图片保存为透明背景图片的方法与实现代码。

实现目标

本文的目标有如下两个:

① 将常见格式[jpg/png/bmp]白色背景图片转换保存为透明背景图片;

② 将常见格式[jpg/png/bmp]复杂背景图片转换保存为透明背景图片。

实现步骤与详细演示

实现步骤:

① 彩色模式加载图片;

② 将图像由BGR颜色空间转换为BGRA颜色空间;

③ 将原图中白色位置的像素值对应A通道均置为0;

④ 将处理后的图像保存为PNG格式。

代码实现与演示:

待处理图像:

处理结果图像:

仔细对比看下区别(白色背景和透明背景):

Alpha通道处理结果(白色部分被保留,黑色部分最终为透明背景):

换个图片试试效果:

Python-OpenCV实现代码:

import cv2
import numpy as np
img = cv2.imread("opencv.jpg")
cv2.imshow('src', img)
print(img.shape)
result = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
for i in range(0,img.shape[0]): #访问所有行
    for j in range(0,img.shape[1]): #访问所有列
        if img[i,j,0] > 200 and img[i,j,1] > 200 and img[i,j,2] > 200:
            result[i,j,3] = 0
cv2.imwrite('result.png', result, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
print(result.shape)
cv2.imshow('result', result)
B,G,R,A = cv2.split(result)
cv2.imshow('B', B)
cv2.imshow('G', G)
cv2.imshow('R', R)
cv2.imshow('A', A)
cv2.waitKey()
cv2.destroyAllWindows()

如果图片背景复杂一点怎么办?万变不离其宗,只要将你想要保留的部分的Alpha通道对应部分灰度值变为255,不想保留的部分Alpha通道对应部分灰度值变为0,然后保存为PNG图片即可。

以下面图片为例:

目标是提取中间部分花,然后处理为透明背景。提取花可以将原图的R通道阈值处理后直接作为Alpah通道即可。

R通道分离效果:

二值化效果:

代码实现与最终结果:

import cv2
import numpy as np
img = cv2.imread("flower.jpg")
cv2.imshow('src', img)
print(img.shape)
result = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
B,G,R = cv2.split(img)
_, Alpha= cv2.threshold(R, 200, 255, cv2.THRESH_BINARY)
cv2.imshow('thres', Alpha)
B2,G2,R2,A2 = cv2.split(result)
A2 = Alpha
result = cv2.merge([B2,G2,R2,A2]) #通道合并
cv2.imwrite('result.png', result)
print(result.shape)
cv2.imshow('result', result)
B,G,R,A = cv2.split(result)
cv2.imshow('B', B)
cv2.imshow('G', G)
cv2.imshow('R', R)
cv2.imshow('A', A)
cv2.waitKey()
cv2.destroyAllWindows()
文章分享自微信公众号:
OpenCV与AI深度学习

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者: Color Space
原始发表时间: 2021-08-07
如有侵权,请联系 cloudcommunity@tencent.com 删除。
展开阅读全文