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随机位置添加水印图相关推荐

  1. python opencv图像拼接 多张图相互有重复部分

    import cv2 import math import os# 文件夹所有图片 path = "Images/ROIRun" images = [] for filename ...

  2. 使用python opencv批量对贴图进行除透明边并压缩

    import glob import cv2def access_pixels(file, frame):print(frame.shape) # shape内包含三个元素:按顺序为高.宽.通道数he ...

  3. python使用matplotlib可视化线图(line plot)、在可视化图像中的指定位置添加横线(add horizontal line in matplotlib plot)

    python使用matplotlib可视化线图(line plot).在可视化图像中的指定位置添加横线(add horizontal line in matplotlib plot) 目录

  4. python opencv 彩色图非局部平均去噪

    python opencv 彩色图非局部平均去噪 代码: import cv2 import numpy as np # 灰度图像去噪 def MeansDenoising(img,N,h,templ ...

  5. python opencv 灰度图非局部平均去噪

    python opencv 灰度图非局部平均去噪 代码: import cv2 import numpy as np # 灰度图像去噪 def MeansDenoising(img,h,templat ...

  6. python Opencv和pyautogui实现自动识图点击

    python Opencv和pyautogui实现自动识图点击 1.导入python及其他模块 匹配类是上一章博客内容,pyautogui自带的图片匹配效果不是很理想.就使用Opencv的图片匹配来实 ...

  7. Android实现无序树形结构图,类似思维导图和级联分层图(无序,随机位置)

    参考文章: 利用递归算法.堆栈打造一个android可擦除思维导图 用SurfaceView实现级联分层图(粗略篇) 效果图打头阵: 这些和亲戚关系图谱,或者思维导图类似,最近公司的医疗项目也用到了这 ...

  8. python opencv cv2.cvtColor()方法(将图像从一种颜色空间转换为另一种颜色空间)(转换成灰度图)

    def cvtColor(src, code, dst=None, dstCn=None): # real signature unknown; restored from __doc__" ...

  9. OpenCV技巧 | 二值图孔洞填充方法与实现(附Python/C++源码)

    点击上方"OpenCV与AI深度学习",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 本文主要介绍使用OpenCV对二值图做孔洞填 ...

最新文章

  1. ECCV 2020 | PHOSA:一种基于单目图像的人-物重建方法
  2. java action的头文件注释_有没有java大神,帮我详细注释下面的代码,action里面复制来的...
  3. vc++ 显式链接dll
  4. 【中继协助频谱切换】基于中继协助的频谱切换机制的MATLAB仿真
  5. X86汇编——字符串逆序输出
  6. InfluxDB中文文档
  7. 某页纸api接口网站源码 高速php源码
  8. java流程控制both_java web面试题
  9. redirect与forward跳转的区别
  10. 面向过程与面向对象代码实例对比
  11. 尚硅谷-个人-数据库记录基础5
  12. 解决SpringBoot项目jar包启动慢
  13. 硅谷首富:拉里 埃里森
  14. CentOS 7 查询CPU、内存、磁盘的使用情况
  15. 洛谷 P3817 小A的糖果
  16. pandas数据排序sort_values后面inplace=True与inplace=False的实例驱动理解
  17. Pytorch中torchvision.datasets.ImageFolder报错:Found 0 files in subfolders of:XXX,完美解决!
  18. java怎样实现窗口可视化_java界面——可视化窗口入门级
  19. Android属性(android:gravity)的说明
  20. RestTemplate封装

热门文章

  1. 模型文件格式:off stl obj
  2. zTree复选框案例
  3. 移动端输入框过滤表情
  4. vivoY73s和vivoY70s的区别 vivoY73s和vivoY70s哪个值得入手
  5. 拼多多买家订单API
  6. 3D微信投票-年会互动节目创意投票科技感微信扫码投票活动创意跳跃互动tioyo
  7. 文本输入的常用特殊符号快捷键
  8. 程序员是学历重要还是能力更重要
  9. 常见几个方式禁止IP访问网站(PHP、Nginx、Apache不同设置方法)
  10. 对焦与变焦的区别(the difference of focus and zoom)