OpenCV对矩形填充透明颜色

OpenCV对矩形填充透明颜色,第1张

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

固定颜色填充

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)

效果如下:

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/714509.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-24
下一篇2022-04-24

发表评论

登录后才能评论

评论列表(0条)

    保存