python opencv随机位置添加水印图
python opencv随机位置添加水印图
需求:一张水印图A,一张待添加水印的图B,需要将水印A随机添加到B图上,进行线性加深操作,最后resize到指定大小
实现效果(背景图来自网络,侵删):
水印图A,白色背景,黑色字
具体实现代码:
import randomfrom skimage import ioimport numpy as np
from PIL import Image
from torchvision.transforms import transformscolor_aug = transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)def Linear_burn(img_1, img_2):img = img_1 + img_2 - 1a = np.where(img <= 0, img_2, img)# a = np.where(a == 0, 1, a)mask_1 = img < 0img = img * (1 - mask_1)# img = (img_2 - img) + img_1 - 1return img, adef add_wm(img_1, img_2, new_w=1024, new_h=1024):img_1 = io.imread(img_1)if isinstance(img_2, str):img_2 = io.imread(img_2)img_2 = np.asarray(Image.fromarray(img_2).resize((1024, 1024)))img_1 = img_1 / 255.0img_2 = img_2 / 255.0# Image.fromarray(np.uint8(img_1 * 255)).show('a')new_img = np.full((new_w, new_h, 3), 255)new_img = new_img / 255.0# Image.fromarray(np.uint8(new_img * 255)).show('a')i1w, i1h = img_1.shape[1], img_1.shape[0]rnd_w = random.randint(0, new_w - i1w)rnd_h = random.randint(0, new_h - i1h)print(rnd_w, rnd_h)img_1 = color_aug(Image.fromarray(np.uint8(img_1 * 255)))new_img[rnd_h:rnd_h + i1h, rnd_w:rnd_w + i1w] = np.asarray(img_1) / 255.0print(new_img.shape)# Image.fromarray(np.uint8(new_img * 255)).show('a')merge_img, a = Linear_burn(new_img, img_2)Image.fromarray(np.uint8(merge_img * 255)).show('a')# Image.fromarray(np.uint8(a * 255)).show('a')return merge_imgif __name__ == '__main__':img_1 = '/home/siyi/Downloads/watermark (1).png'img_2 = '/home/siyi/Pictures/01570a5d390482a8012187f478c722.jpg@1280w_1l_2o_100sh.jpg'merge_img = add_wm(img_1, img_2)
如有错误请指正!
python opencv随机位置添加水印图相关推荐
- python opencv图像拼接 多张图相互有重复部分
import cv2 import math import os# 文件夹所有图片 path = "Images/ROIRun" images = [] for filename ...
- 使用python opencv批量对贴图进行除透明边并压缩
import glob import cv2def access_pixels(file, frame):print(frame.shape) # shape内包含三个元素:按顺序为高.宽.通道数he ...
- python使用matplotlib可视化线图(line plot)、在可视化图像中的指定位置添加横线(add horizontal line in matplotlib plot)
python使用matplotlib可视化线图(line plot).在可视化图像中的指定位置添加横线(add horizontal line in matplotlib plot) 目录
- python opencv 彩色图非局部平均去噪
python opencv 彩色图非局部平均去噪 代码: import cv2 import numpy as np # 灰度图像去噪 def MeansDenoising(img,N,h,templ ...
- python opencv 灰度图非局部平均去噪
python opencv 灰度图非局部平均去噪 代码: import cv2 import numpy as np # 灰度图像去噪 def MeansDenoising(img,h,templat ...
- python Opencv和pyautogui实现自动识图点击
python Opencv和pyautogui实现自动识图点击 1.导入python及其他模块 匹配类是上一章博客内容,pyautogui自带的图片匹配效果不是很理想.就使用Opencv的图片匹配来实 ...
- Android实现无序树形结构图,类似思维导图和级联分层图(无序,随机位置)
参考文章: 利用递归算法.堆栈打造一个android可擦除思维导图 用SurfaceView实现级联分层图(粗略篇) 效果图打头阵: 这些和亲戚关系图谱,或者思维导图类似,最近公司的医疗项目也用到了这 ...
- python opencv cv2.cvtColor()方法(将图像从一种颜色空间转换为另一种颜色空间)(转换成灰度图)
def cvtColor(src, code, dst=None, dstCn=None): # real signature unknown; restored from __doc__" ...
- OpenCV技巧 | 二值图孔洞填充方法与实现(附Python/C++源码)
点击上方"OpenCV与AI深度学习",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 本文主要介绍使用OpenCV对二值图做孔洞填 ...
最新文章
- ECCV 2020 | PHOSA:一种基于单目图像的人-物重建方法
- java action的头文件注释_有没有java大神,帮我详细注释下面的代码,action里面复制来的...
- vc++ 显式链接dll
- 【中继协助频谱切换】基于中继协助的频谱切换机制的MATLAB仿真
- X86汇编——字符串逆序输出
- InfluxDB中文文档
- 某页纸api接口网站源码 高速php源码
- java流程控制both_java web面试题
- redirect与forward跳转的区别
- 面向过程与面向对象代码实例对比
- 尚硅谷-个人-数据库记录基础5
- 解决SpringBoot项目jar包启动慢
- 硅谷首富:拉里 埃里森
- CentOS 7 查询CPU、内存、磁盘的使用情况
- 洛谷 P3817 小A的糖果
- pandas数据排序sort_values后面inplace=True与inplace=False的实例驱动理解
- Pytorch中torchvision.datasets.ImageFolder报错:Found 0 files in subfolders of:XXX,完美解决!
- java怎样实现窗口可视化_java界面——可视化窗口入门级
- Android属性(android:gravity)的说明
- RestTemplate封装