OpenCV Python 图像相加与透明色转换
创始人
2024-11-04 21:35:40
0

将两幅图添加起来,构成一幅新的图像,并尝试将一个PNG的透明背景转换为特定的颜色。

生成纯背景

以下代码生成一个纯色背景JPG,颜色为照片底板的蓝(R:60 G:140 B:220)。在用OpenCV创建图像时,颜色按BGR

import cv2 import numpy as np  def create_blank(width, height, rgb_color=(60, 140, 220)):     """Create new image(numpy array) filled with certain color in RGB"""     # Create black blank image     image = np.zeros((height, width, 3), np.uint8)      # Since OpenCV uses BGR, convert the color first     color = tuple(reversed(rgb_color))     # Fill image with color     image[:] = color      return image  img = cv2.imread('dog.png') (rows, cols) = img.shape[:2] blank = create_blank(cols, rows) cv2.imwrite('blue.jpg', blank) 

蓝色背景

两个图像相加

两个图像大小相同的情况下,可以通过矩阵叠加方法——OpenCV Python中,为cv2.add,合并在一起,代码如下:

import cv2  img1 = cv2.imread('dog.png') img2 = cv2.imread('blue.jpg')  # Add 2 images img_dst = cv2.add(img1, img2)  # Display the processed images  cv2.imshow('img', img_dst ) cv2.imwrite('add.jpg', img_dst)  # Wait for a key press and then close the windows cv2.waitKey(0) cv2.destroyAllWindows() 

加法狗

显然,这是矩阵个元素数值的相加,那么,假如要把透明背景用别的颜色替换,而不是这样相加,又该“如何应对”?

透明色转换

读入一个有透明背景的png图片,然后我们会发现,它的α通道是0。

import cv2  # Read a png with alpha channel img = cv2.imread('dog.png', cv2.IMREAD_UNCHANGED) cv2.imshow('img', img) cv2.imwrite('dog.png', img) # Wait for a key press and then close the windows cv2.waitKey(0) cv2.destroyAllWindows() 

对于图像的透明部分,其值为[0,0,0,0],那么我们可以将该透明部分修改成对应的颜色,具体见函数transparent2bgra_color

import cv2 import numpy as np  def transparent2bgra_color(img, bgra_color=(255, 255, 255, 255)):     # Avoid the side-effect     res = img.copy()     res[img[:, :, 3] == 0] = bgra_color     return res  # Read the png image with alpha channel origin_img = cv2.imread('dog.png', cv2.IMREAD_UNCHANGED) dst_img = transparent2bgra_color(origin_img, bgra_color=(220, 140, 60, 255)) black_dog = transparent2bgra_color(origin_img, bgra_color=(0, 0, 0, 255))  cv2.imshow('Origin', origin_img) cv2.imshow('Converted', dst_img) cv2.imshow('Black', black_dog) cv2.imwrite('new_dog.png', dst_img) cv2.imwrite('black_dog.png', black_dog) # Wait for a key press and then close the windows cv2.waitKey(0) cv2.destroyAllWindows() 

Origin:
原始图像
Converted:
转换后图像
Black:
黑色背景的狗狗

相关内容

热门资讯

推荐一款!牛牛房卡哪里有卖的海... 推荐一款!牛牛房卡哪里有卖的海航大厅/微信链接房间卡怎么购买海航大厅是一款非常受欢迎的游戏,咨询房/...
ia实测“在哪里买炸金花房卡哪... 随意玩是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享...
我来教你/牛牛房卡代理新超圣/... 微信游戏中心:新超圣房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程序...
秒懂教程!拼三张房卡如何购买,... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
IA解析/金花房卡代理零售天启... 天启联盟是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
一分钟了解“微信群链接牛牛买房... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
正规平台有哪些,牛牛房卡制作链... 今 日消息,乐酷大厅房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
秒懂教程!拼三张房卡如何购买,... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享...
ia实测“如何在微信上购买金花... 金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享受...
正规平台有哪些,金花房间怎么创... 流樱大厅/新道游是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:33...
秒懂教程!微信炸金花房卡哪里有... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
我来教你/牛牛房卡怎么获得乐酷... 您好!微信乐酷大厅大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(乐酷大厅)大厅介绍:...
一分钟了解“买房卡的金花房代理... 海贝之城是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
我来教你/牛牛房卡官网玫瑰大厅... 我来教你/牛牛房卡官网玫瑰大厅/房卡链接怎么获取玫瑰大厅是一款非常受欢迎的游戏,咨询房/卡添加微信:...
科技实测!金花房卡批发价荣耀乐... 微信游戏中心:荣耀乐娱房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
一分钟推荐“创建金花房间链接教... 神皇大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
头条推荐!如何购买金花房卡皇豪... 皇豪互娱是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
秒懂教程!拼三张房卡链接在哪弄... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享...
重大通报,牛牛房卡哪里有卖的新... 今 日消息,新道游/皇豪互娱房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更...
正版授权!牛牛房卡出售江山大厅... 江山大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...