栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

OpenCV对矩形填充透明颜色

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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)

效果如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/822448.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号