【opencv图片边缘填充】

设计背景

环境:vscode+py+opencv
前段时间参与公司设计验证的一颗显控soc,有一个刷图bug直到流片出来后才发现,在同一行排布多个具有alpha数据的图片时,图片的最后四列alpha数据提取会提前终止,以至于alpha值都与第一列alpha一致,所以考虑子在不改变图片显示效果的前提下,对该bug进行规避,首先考虑到的是最简单的办法,通过opencv对图片进行提前处理,加入无效的数据边框。也整理下OpenCV处理图片边框问题

OpenCV函数原型分析

cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value)
copyMakeBorder(src: Mat, top, bottom, left, right, borderType, dts: Mat = …, value=…)
src:需要填充的图像

top:图像上面填充边界的长度
bottom:图像上下面填充边界的长度
left:图像左面填充边界的长度
right :图像右面填充边界的长度
borderType:边界的类型
BORDER_REPLICATE:复制法,即复制最边缘的像素。例如:aaaa|abcdefg|ggggg
BORDER_REFLECT:反射法,即以最边缘的像素为对称轴。例如:fedcba|abcdefg|gfedec
BORDER_REFLECT_101:反 射法,也是最边缘的像素为对称轴,但与BORDER_REFLECT有区别。例如:fedcb|abcdefg|fedec
BORDER_WRAP:外包装法,即以图像的左边界与右边界相连,上下边界相连。例如:cdefgh|abcdefgh|abcdefg
BORDER_CONSTANT:常量法。

给图片添加top_size、bottom_size、left_size、right_size,边框的RGB数据,因为功能要设置成透明无效数据,所以RGB数据设置位0

rgb_extrention=cv2.copyMakeBorder(rgb_page,top_size,bottom_size,left_size,right_size, cv2.BORDER_CONSTANT,value=(R,G,B))

添加alpha数据

'''
'''
 * Copyright(c) 2022 AiXieSheng Technology. All Rights Reserved
Author: wentao
Date: 2022-09-07 10:37:41
Description: 
LastEditTime: 2022-11-12 15:14:53
LastEditors: your name
FilePath: \copyMakeBorder\read_png_rgb.py
'''
import matplotlib.pyplot as plt # plt 用于显示图片
import numpy as np
import cv2
 
top_size,bottom_size,left_size,right_size=(0, 0, 4, 4)

path1 = "F:/opencv/copyMakeBorder/page/warm_10_def.png"

img1=cv2.imread(path1)
rgb_page = cv2.cvtColor(img1,cv2.COLOR_BGR2RGB) #COLOR_BGR2BGRA
rgb_extrention=cv2.copyMakeBorder(rgb_page,top_size,bottom_size,left_size,right_size, cv2.BORDER_CONSTANT,value=(0,0,0))
cv2.namedWindow('gray1',cv2.WINDOW_NORMAL)
cv2.imshow('gray1',rgb_page) 
plt.imshow(rgb_extrention) # 显示图片
plt.axis('on') # 显示坐标轴
plt.show()
cv2.waitKey(0)
cv2.destroyAllWindows()



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

shake boom

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

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

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

打赏作者

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

抵扣说明:

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

余额充值