OpenCV对矩形填充透明颜色

对一张图像中的不规则图形进行填充

固定颜色填充

cv2.fillPoly函数

img = cv2.imread('./001.png')
area = np.array([[1000, 200], [1500, 200], [1500, 400], [1000, 400]])
cv2.fillPoly(img,[area], color=(255, 255, 255))

效果如图,这里面可以传入多个area坐标组,颜色自己设定
在这里插入图片描述

透明颜色填充

没有函数专门用来填充透明颜色
但是我们可以使用图像融合cv2.addWeighted
(注意使用这个方法只能对矩形填充透明颜色,不规则的图形不可以)

import cv2
import numpy as np


img = cv2.imread('./001.png')
# 创建一个三通道的图像   图像大小可以自己设定 np.zeros(H,W,C)
create_green = np.zeros((100,100,3),dtype=np.uint8)
# 设定图像三个通道的颜色值
# img[ y: y+h , x : x+w ]  分割图像
# numpy是BGR 所以第0个通道是B 蓝色   1是G 绿色   2是R 红色
create_green[:,:,0] = 0
create_green[:,:,1] = 255 #这里我创建一个纯绿色的图像
create_green[:,:,2] = 0

# 图像融合  两个图像必须一样大才能融合   0.7 和 0.3是参数
#  图像相加的公式是 R=a*x1+b*x2+c    x1 x2代表两个图像  a b是两个参数 c是偏置项
# 可以调整融合度参数 来控制“透明度”
img_add = cv2.addWeighted(img[100:200,100:200], 0.7 ,create_green, 0.3, 0)
# 融合好的图像再拼回原图
img[100:200,100:200] = img_add
# 修改大小后展示出来
h_h = img.shape[0]
w_w = img.shape[1]
resize = cv2.resize(img,( int(w_w / 2) ,int(h_h / 2) ) ,interpolation = cv2.INTER_CUBIC)
cv2.imshow("test",resize)
cv2.waitKey(0)

效果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

1900_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值