精易论坛

标题: opencv 添加透明图水印 [打印本页]

作者: z13228604287    时间: 2024-6-19 20:11
标题: opencv 添加透明图水印



  
窗口程序集名保 留  保 留备 注
程序集1   
子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
背景数据矩阵类 
水印数据矩阵类 
水印.从字节集加载 ( #水印, #读图_原始 )
背景.从字节集加载 ( #背景, #读图_彩色 )
视觉_显示图像 (“小白鼠”, 添加透明水印 (背景, 坐标二维整型 (0, 0), 水印))
视觉_等待按键 (0)
返回 (0)  ' 可以根据您的需要返回任意数值
子程序名返回值类型公开备 注
添加透明水印数据矩阵类 
参数名类 型参考可空数组备 注
背景图数据矩阵类
位置坐标二维整型结构
水印数据矩阵类
变量名类 型静态数组备 注
缩放比例小数型 
新宽整数型 
新高整数型 
变化尺寸后水印图数据矩阵类 
重叠_x整数型 
重叠_y整数型 
背景宽整数型 
背景高整数型 
图层数组容器B、G、R、A
蒙版数据矩阵类 
感兴区域数据矩阵类 
图_背景数据矩阵类 
图_前景数据矩阵类 
最终_区域数据矩阵类 
水印去透明图数据矩阵类 
' 固定缩放比例为50%
缩放比例 = 15
' 计算新的水印尺寸
新宽 = 缩放比例 ÷ 100 × 水印.列数
新高 = 缩放比例 ÷ 100 × 水印.行数
视觉_尺寸变换 (水印, 变化尺寸后水印图, 尺寸整数 (新宽, 新高), 0, 0, #插值_面积 )
' 获取水印的位置坐标
重叠_x = 位置.横坐标
重叠_y = 位置.纵坐标
背景宽 = 背景图.列数
背景高 = 背景图.行数
' 确保水印位置加上宽度和高度不会超出视频尺寸
重叠_x = 取最小值 (取最大值 (0, 重叠_x), 背景宽 - 新宽)
重叠_y = 取最小值 (取最大值 (0, 重叠_y), 背景高 - 新高)
' 检查水印是否有透明通道
判断 (变化尺寸后水印图.通道数 () = 4)
' 分离通道
图层 = 视觉_分割通道 (变化尺寸后水印图)
视觉_颜色空间转换 (变化尺寸后水印图, 水印去透明图, #颜色_BGRA转BGR, 0)
' 将alpha通道转换为白色和黑色的mask  第4个通道就是透明
视觉_阈值 (图层.取数据矩阵类 (4), 蒙版, 1, 255, #阈值_二值化 )
' 确保掩码大小与ROI相匹配
视觉_尺寸变换 (蒙版, 蒙版, 尺寸整数 (新宽, 新高), 0, 0, #插值_面积 )
' 将mask转换为8位无符号整数
蒙版.转换到 (蒙版, #矩阵_字节型U, 1, 0)
' 计算叠加区域
感兴区域 = 背景图.感兴区域 (矩形整型 (重叠_x, 重叠_y, 新宽, 新高))
' 在ROI上叠加水印
视觉_按位_与 (水印去透明图, 水印去透明图, 图_前景, 蒙版)
视觉_按位_非 (蒙版, 蒙版, )
视觉_按位_与 (感兴区域, 感兴区域, 图_背景, 蒙版)
视觉_加 (图_背景, 图_前景, 最终_区域, , -1)
' 将处理后的区域放回原始帧中
最终_区域.复制 (感兴区域, )


变化尺寸后水印图.复制 (背景图.感兴区域 (矩形整型 (重叠_x, 重叠_y, 新宽, 新高)), )

返回 (背景图)


i支持库列表   支持库注释   
OpenCV(未知支持库)


作者: pq9999    时间: 2024-7-19 17:02
感谢分享,学习了
作者: kingshengg    时间: 2024-8-1 08:36
感谢分享,学习了
作者: kingshengg    时间: 2024-8-1 08:38
感谢分享,学习了
作者: qq977352880    时间: 2024-9-8 00:30
这是我今天学到的最有用的东西。

作者: 272911602    时间: 2024-11-15 16:09
可以拉的大
作者: 涤尘    时间: 2025-4-18 20:36
感谢分享‘




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4