OpenCV实现高斯模糊加水印

# coding:utf-8
# @Email: wangguisen@donews.com
# @Time: 2023/4/21 10:07
# @File: utils.py
'''

'''
import cv2
import PIL
from PIL import Image
import numpy as np
from watermarker.marker import add_mark, im_add_mark
import matplotlib.pyplot as plt

# PIL Image转换成OpenCV格式
def PILImageToCV(imagePath):
    img = Image.open(imagePath)
    plt.imshow(img)
    img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
    plt.imshow(img)
    plt.show()

# OpenCV图片转换为PIL image
def CVImageToPIL(imagePath=None, img=None):
    # 自己改改
    # img = cv2.imread(imagePath)
    # plt.imshow(img)
    img2 = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    # plt.imshow(img2)
    # plt.show()
    return img2

img = cv2.imread('./imgs/res_ori_test.jpg')

# 创建毛玻璃特效
# 参数2:高斯核的宽和高(建议是奇数)
# 参数3:x和y轴的标准差
dst = cv2.GaussianBlur(img, (99, 99), 333)
# cv2.imshow('dst', dst)


# add_mark(file="test1.jpg", out="add_mark_test1.jpg", mark="Python", opacity=0.2, angle=30, space=30)

dst = CVImageToPIL(img=dst)
image = im_add_mark(dst, text="Python", color="#8B8B1B", size=50, opacity=0.3, space=75, angle=30)
image.save("./imgs/add_mark_test1.png")

# add_mark(dst, out="./imgs/add_mark_test1.jpg", mark="Python", opacity=0.2, angle=30, space=30)

# cv2.waitKey()


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/52289.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【后端面经】微服务构架 (1-6) | 隔离:如何确保心悦会员体验无忧?唱响隔离的鸣奏曲!

文章目录 一、前置知识1、什么是隔离?2、为什么要隔离?3、怎么进行隔离?A) 机房隔离B) 实例隔离C) 分组隔离D) 连接池隔离 与 线程池隔离E) 信号量隔离F) 第三方依赖隔离二、面试环节1、面试准备2、基本思路3、亮点方案A) 慢任务隔离B) 制作库与线上库分离三、章节总结 …

windows环境安装elasticsearch+kibana并完成JAVA客户端查询

下载elasticsearch和kibana安装包 原文连接:https://juejin.cn/post/7261262567304298554 elasticsearch官网下载比较慢,有时还打不开,可以通过https://elasticsearch.cn/download/下载,先找到对应的版本,最好使用迅…

Python零基础入门(十)——模块与包

系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟 码字不易,如果觉得文章不…

CAN通信的位定时与同步

位定时与同步 1.位时间 1.1相关基本概念 1)系统时钟:记为 t c l k t_{clk} tclk​; 2)CAN时钟周期:CAN时钟是由系统时钟分频而来的一个时间长度值,表示CAN控制器的工作时钟,实际上就是一个时…

某行动态cookie反爬虫分析

某行动态cookie反爬虫分析 1. 预览 反爬网址(base64): aHR0cDovL3d3dy5wYmMuZ292LmNu 反爬截图: 需要先加载运行js代码,可能是对环境进行检测,反调试之类的 无限debugger 处理办法 网上大部分人说的都是添加cookie来解决。 那个noscrip…

《Kubernetes故障篇:unable to retrieve OCI runtime error》

一、背景信息 1、环境信息如下: 操作系统K8S版本containerd版本Centos7.6v1.24.12v1.6.12 2、报错信息如下: Warning FailedCreatePodSandBox 106s (x39 over 10m) kubelet (combined from similar events): Failed to create pod sandbox: rpc error: …

【Docker 学习笔记】Windows Docker Desktop 安装

文章目录 一、前言二、Windows Docker 安装1. 基于Hyper-V后端和Windows容器的安装2. 基于WSL2后端的安装(推荐)3. 安装Docker Desktop on Windows4. 启动并验证Docker Desktop 一、前言 Docker并非是一个通用的容器工具,它依赖于已存在并运…

《零基础入门学习Python》第070讲:GUI的终极选择:Tkinter7

上节课我们介绍了Text组件的Indexs 索引和 Marks 标记,它们主要是用于定位,Marks 可以看做是特殊的 Indexs,但是它们又不是完全相同的,比如在默认情况下,你在Marks指定的位置中插入数据,Marks 的位置会自动…

SAMBA 文件分享相关 笔记

目标说明 在Linux 安装Samba,然后在Windows端映射为网络硬盘 流程 Linux 端命令 apt install samba -y 默认情况下软件会询问是否迁移系统网络设置以搭建协议,选择迁移即可修改配置文件 vim /etc/samba/smb.conf Samba 的配置文件中会带一个名为 prin…

[VRTK4.0]将Unity输入系统与VRTKv4结合使用

学习目标: 展示了如何在Unity项目中设置Unity输入系统,以及如何导入输入系统Tilia包以支持VRTKTilia包与新的Unity输入系统操作一起工作。 流程: 步骤一: 首先我们需要再次检查项目设置是否具有新的Unity输入系统。通过Project S…

JAVA SE -- 第十三天

(全部来自“韩顺平教育”) 集合 一、集合框架体系 集合主要是两组(单列集合、双列集合) Collection接口有两个重要的子接口List 、Set,它们的实现子类都是单列集合 Map接口的实现子类是双列集合,存放的…

Java019-1——面向对象的三大特性

一、封装性 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。(这里说的信息就是类中的属性和方法) 1.1、封装性的体现 想要通过代码体现封装性之前,需要先…

使用vscode+platformio搭建arduino开发环境

存在的问题: Arduino编译时会将所有的C文件都编译一遍造成编译很慢,一个简单的工程稍加修改有可能都需要三四分钟才能编译完成,同时arduino也不支持代码跳转查看功能,不方便代码查看。 解决方法: 使用vscodeplatfor…

【c++】类和对象

类和对象 面向过程和面向对象的初步认识 我们用军事为例,要完成一次作战,需要侦察、后勤保障、战略部署、战术部署...等等 面向过程: 更加关注过程,关注如何侦察(无人机侦察、火力侦察、侦察小组侦察)&…

vue 文件扩展名中 esm 、common 、global 以及 mini 、 dev 、prod 、runtime 的含义

vue 文件扩展名中 esm 、common 、global 以及 mini 、 dev 、prod 、runtime 的含义 vue.js 直接用在 script 标签中的完整版本(同时包含编译器 compiler 和运行时 runtime),可以看到源码,适用于开发环境。 这个版本视图可以写在…

微服务的各种边界在架构演进中的作用

演进式架构 在微服务设计和实施的过程中,很多人认为:“将单体拆分成多少个微服务,是微服务的设计重点。”可事实真的是这样吗?其实并非如此! Martin Fowler 在提出微服务时,他提到了微服务的一个重要特征—…

【Chat GPT】用 ChatGPT 运行 Python

前言 ChatGPT 是一个基于 GPT-2 模型的人工智能聊天机器人,它可以进行智能对话,同时还支持 Python 编程语言的运行,可以通过 API 接口进行调用。本文将介绍如何使用 ChatGPT 运行 Python 代码,并提供一个实际代码案例。 ChatGPT …

【雕爷学编程】MicroPython动手做(18)——掌控板之声光传感器2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

[php-cos]ThinkPHP项目集成腾讯云储存对象COS

Cos技术文档 1、安装phpSdk 通过composer的方式安装。 1.1 在composer.json中添加 qcloud/cos-sdk-v5: >2.0 "require": {"php": ">7.2.5","topthink/framework": "^6.1.0","topthink/think-orm": "…

Oracle 19c 报ORA-704 ORA-01555故障处理---惜分飞

异常断电导致数据库无法启动,尝试对数据文件进行recover操作,报ORA-00283 ORA-00742 ORA-00312错误,由于redo写丢失无法正常应用 D:\check_db>sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期日 7月 30 07:49:19 2023 Version 19.3.0.0.0 Copyrig…
最新文章