python opencv去图片水印

2023-10-29

背景】

  最近有一个需要为图片去水印的需求,于是各种折腾开始。

【背景了解图片标准】

图片使用RGB编码,RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色,RGB即是代表红、绿、蓝三个通道的颜色。

【分析图片】

分析了图片之后,发现规律:

1、图片需要的图形是黑色的

2、水印都是一种颜色:水红

白色对应#FFFFFF就是 255 255 255

黑色对应#000000 就是 0     0     0

我们用rgb取色工具

发现红色的字rgb有以下情况:差不多grb的相加和都在200以上,那么我们写程序的判断基准就产生了:就是找到每个像素,如果像素和大于250,并且小于765(不是白色),就将这个像素点重置为白色:255,255,255。

wKiom1SPtobjuVmnAACynVQSCD0887.jpg

wKioL1SPtyaQF27IAACmD0uzxKA365.jpg

wKiom1SPtofTtOB7AACrw0ual4Q368.jpg

wKioL1SPtyazDRqAAACscgzUL8Q380.jpg

得到以上逻辑之后,怎样在代码中实现?找了几个python下处理图像的库,最终选择了opencv。于是乎接着就要研究opencv的api了。

具体可以看看opencv的官网:http://opencv.org/

当然一开始你觉得看直接去看手册很苦逼,也可以看看别人的程序找点感觉了。

【安装opencv】

其实安装opencv也是很折腾人的一个事情,mac下安装opencv安装可参考:

1
2
sudo brew tap homebrew / science
sudo brew install OpenCV


wKioL1SPt0Kz7vQvAAVKUiIbzNI551.jpg

注意安装好了之后,需要将库的地址做说明,具体看上图红框的位置。

有可能还需要

1
sudo  brew update


【具体代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python opencv去图片水印 的相关文章

  • Python、Matplot的subplot实现一行3列的子图绘制,并添加背景色

    Python Matplot的subplot实现一行3列的子图绘制 并添加背景色 1 可能遇到的问题 2 示例 1 绘制2 2 俩行俩列 的子图 并设置背景色 2 绘制1 3 一行三列 的子图 并设置横轴纵轴值 3 绘制1 3 一行三列 的
  • QuaggaJS在给定图像中定位条形码的工作原理

    QuaggaJS在给定图像中定位条形码的工作原理 一 介绍 二 步骤 1 创建图像的二进制表示 2 将图像切成网格 20 x 15个单元 3 提取每个细胞的骨架 4 组件标记 5 确定组件的方向 6 测定细胞质量 7 查找连接的单元格 8
  • 使用Python,OpenCV进行卡类型及16位卡号数字的OCR

    使用Python OpenCV进行卡类型及16位卡号数字的OCR 1 效果图 2 原理 2 1 OCR A字体 2 2 检测过程步骤 2 3 优化 3 源代码 参考 这篇博客将介绍如何通过OpenCV和Python使用模板匹配执行光学字符识
  • 图像分割:Python的SLIC超像素分割

    图像分割 Python的SLIC超像素分割 1 什么是超像素 2 为什么超像素在计算机视觉方面有重要的作用 3 简单线性迭代聚类 SLIC 4 效果图 5 源码 参考 1 什么是超像素 在单个或多个通道中 图像表示为像素网格 我们采用这些M
  • Python高级函数1:使用 map()、reduce()、filter()、zip() 和 enumerate() 简化代码

    Python高级函数1 使用 map reduce filter zip和 enumerate 简化代码 1 原理 1 1 map 函数 1 2 reduce 函数 1 3 filter 函数 1 4 zip 函数 1 5 enumerat
  • Python,OpenCV中的非局部均值去噪(Non-Local Means Denoising)

    Python OpenCV中的非局部均值去噪 Non Local Means Denoising 1 效果图 2 原理 3 源码 2 1 单彩色图去噪 2 2 多连续彩色帧去噪 参考 这篇博客将介绍不同的计算摄影技术 非局部均值去噪 Non
  • Python可视化——3D绘图解决方案pyecharts、matplotlib、openpyxl

    Python可视化 3D绘图解决方案pyecharts matplotlib openpyxl 1 pyecharts 2 matplotlib 3 openpyxl 这篇博客将介绍python中可视化比较棒的3D绘图包 pyecharts
  • 使用Microsoft认知服务进行文本检测和 OCR

    使用Microsoft认知服务进行文本检测和 OCR Microsoft Cognitive Services MCS Microsoft认知服务 这篇博客将介绍 Microsoft Cognitive Services MCS OCR A
  • OpenCV中的图像变换——傅里叶变换

    OpenCV中的图像变换 傅里叶变换 1 效果图 2 原理 3 源码 3 1 Numpy实现傅里叶变换 3 2 OpenCV实现傅里叶变换 3 3 HPF or LPF 参考 这篇博客将介绍OpenCV中的图像变换 包括用Numpy Ope
  • 图像搜索引擎1

    图像搜索引擎1 使用Python颜色直方图在数据集中搜索视觉上相似的图像 这篇博客将介绍如何从头到尾创建图像搜索引擎 第一步是选择一个图像描述符 使用3D RGB直方图来表征图像的颜色 然后通过提取特征向量 即直方图 使用描述符对数据集中的
  • 使用Python,OpenCV和Hough圆检测图像中的圆

    使用Python OpenCV和Hough圆检测图像中的圆 1 效果图 2 cv2 HoughCircles image method dp minDist 3 源码 参考 前几篇博客中有介绍 使用OpenCV检测图形中的三角形 正方形 矩
  • 使用Python,OpenCV截取图片ROI

    使用Python OpenCV截取图片ROI 1 效果图 2 步骤 2 1 环境配置 2 2 原理 3 源码 参考 这篇博客将介绍如何使用Python OpenCV截取图片ROI Regions Of Interests 即我们感兴趣的部分
  • OpenCV使用 GrabCut 算法进行交互式前景提取

    OpenCV使用 GrabCut 算法进行交互式前景提取 1 效果图 2 源码 参考 这篇博客将介绍如何使用Python OpenCV中的GrabCut 算法来提取图像中的前景 并为此创建一个交互式应用程序 1 效果图 官方示例 lena
  • 使用Python和OpenCV标记超级像素的炫彩度

    使用Python和OpenCV标记超级像素的炫彩度 1 效果图 2 步骤 3 源代码 参考 这篇博客将介绍如何使用SLIC分割算法来计算输入图像的超像素 并对每一块超像素区域计算炫彩度量值 然后将每个区域的炫彩度量值加入到掩模图像 以展示图
  • 红外视觉1:近红外与中远红外图像

    红外视觉1 近红外与中远红外图像 这篇博客将介绍红外成像的基础知识 包括 什么是红外图像 近红外与中远 远红外 Near vs Mid Far Infrared Far infrared 红外热像仪的类型 用途 红外视觉简介 近红外与中远红
  • Pyhton,OpenCV对象检测之——Haar级联人脸及眼睛检测

    Pyhton OpenCV对象检测之 Haar级联人脸及眼睛检测 1 效果图 2 原理 2 1 Haar人脸检测原理 2 2 Haar级联预训练的模型 3 源码 3 1 图像面部及眼睛检测 3 2 视频帧面部及眼睛检测 参考 这篇博客将介绍
  • 使用Python,Keras和TensorFlow训练第一个CNN

    使用Python Keras和TensorFlow训练第一个CNN 这篇博客将介绍如何使用Python和Keras训练第一个卷积神经网络架构 ShallowNet 并在动物和CIFAR 10数据集上对其进行了训练 ShallowNet对动物
  • 使用Python,OpenCV进行图像哈希

    使用Python OpenCV进行图像哈希 1 效果图 2 原理 3 源代码 参考 这篇博客将介绍图像哈希 感知哈希以及这些算法如何用于 快速 确定图像的视觉内容是否相同或相似 并实现了差异散列 一个常见的感知散列算法 1 非常快 而 2
  • Python方便又强大的日志记录器——loguru

    Python方便又强大的日志记录器 loguru Loguru是一个旨在使Python日志记录变得愉快的库 该库通过添加一系列有用的功能来解决标准记录器的警告 从而减少Python日志记录的痛苦 日志记录对每个应用程序都是基本的 它简化了调
  • Numpy掩码数组masked arrays,这一篇就够了

    Numpy掩码数组masked arrays 这一篇就够了 1 什么是掩码数组 2 示例 2 1 一个例子走进掩码数组 2 2 创建一个数组第二个值是无效的 2 3 创建一个数组所有靠近1 e20的值是无效的 2 4 只获取有效项 2 5

随机推荐

  • cesium timeline时间改为系统时间(北京时间) vue版本

    效果图 初始化三维球后 追加如下代码 修改timeline时间 从珠联时间改为北京时间 initGlobel 省略初始化 this viewer animation viewModel dateFormatter this DateTime
  • linux卸载openjdk并安装jdk

    1 java version 查看是否安装 2 查看有哪些java安装文件 3 开始卸载 卸载掉下面两个 java version查看找不到java版本 就说明卸载成功了 如果卸掉下面两个还能看到java版本的话 就可以把第一个和第二个一起
  • python中字符串大小写判断和转换函数(upper,lower,capitalize,istitle)

    S为一字符串 可以使用python的内建函数对S中的字母大小写做判断和改变 supper lower和capitalize是转换函数 可以把字符串中的字母做相应的处理 istitle isupper和islower是判断函数 它们对字符串做
  • opencv+mfc搭建框架

    环境 vs2012 opencv2 49 功能 加载图片 保存 二值化 放大 缩小 旋转 实现方法 用opencv来实现相应的图像处理功能 用mfc的对话框来搭建框架 难点 在Mfc框架下显示图片 解决办法 根据父窗口与子窗口的关系 将op
  • VuforiaAR扫描3d物体

    Unity版本为2020 3 20 Vuforia版本为9 6 3 有偿demo 链接 https pan baidu com s 1YlmKeMWvMFRYPhieP3OrqQ 3D物体数据扫描 安卓机扫描3D物体的Scanner工具包下
  • C#的线性规划代码

    using System using System Collections Generic using System Linq using System Text using System Threading Tasks namespace
  • C语言实现RAND函数的方法

    C语言使用rand 一个值就可以实现生成一个伪随机数供我们使用 那么rand函数是如何实现的呢 我们自己可不可以编辑出来 其实是可以的 rand作为伪随机数发生器产生的是一个伪随机数 一般的用途能够满足 要想实现这个函数 需要用一个公式 x
  • Springboot使用Thymeleaf模板引擎无法加载css样式等静态资源

    我的项目文件目录如下 在使用thymeleaf模板引擎时访问不到css样式文件如下 其原因是Thymeleaf模板引擎引用文件需要按照规定的写法 如下 需使用th href属性 路径需使用 文件路径 包裹 加上后就可以看见样式了
  • 报表的发布

    各种不同的报表工具 其发布方式是不一样的 现在说说一些报表工具的发布方式 笔者对报表了解不多 可能有些认识上的错误 望大家指明 DevExpress公司出品的报表工具 XtraReport 它的报表设计器就是集成在VS NET集成开发环境中
  • 简单了解JVM 组成以及各部分

    简单介绍JVM各组成部分 图1 JVM组成部分 JVM包含两个子系统和两个组件 两个子系统 类加载子系统 Class loader 和执行引擎 Execution engine 两个组件 运行时数据区 Runtime data area 本
  • leetcode 1233. 删除子文件夹

    1233 删除子文件夹 难度中等142 你是一位系统管理员 手里有一份文件夹列表 folder 你的任务是要删除该列表中的所有 子文件夹 并以 任意顺序 返回剩下的文件夹 如果文件夹 folder i 位于另一个文件夹 folder j 下
  • Java集合框架

    文章目录 一 简介 1 集合框架介绍 2 相关容器介绍 2 1 Set相关 2 2 List相关 2 3 Queue相关 2 4 Map相关 3 集合重点 二 ArrayList分析 1 ArrayList使用 2 ArrayList介绍
  • MMCV/MMDet/MMDet3D 的版本对应

    MMDetection3D version MMDetection version MMSegmentation version MMCV version master mmdet gt 2 24 0 lt 3 0 0 mmseg gt 0
  • [Pytorch系列-65]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 无监督图像生成CycleGan的基本原理

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121962962 目录 第1章 什么是
  • 图片像素点统计

    最近这几天闲来无事 想起来18年12月末帮别人做了一个编程题 题目就是如何统计一张图片中的气泡数目 以及每个气泡的面积 上面这张图就是案例 里面白色的都是不规则形态的气泡 当拿到这个题目时看一眼就大致有些思路 因为怎么说也是学了数据结构的人
  • PHp 密码验证

    MD5加密 string md5 string str bool raw output false 参数 str 原始字符串 raw output 如果可选的 raw output 被设置为 TRUE 那么 MD5 报文摘要将以16字节长度
  • 纯前端实现地址分词,模糊匹配

    关于地址分词的一点思路 一些主要代码的简要说明 本人的思路是 解析的结果存储在一个类似树状的结构中 就和DOM节点类似 用parent字段指向父级 用children字段指向子级 准备工作 CityModel 类 先构建出一个 CityMo
  • QT程序发布方法

    方法一 首先打开想要发布的程序所在的项目 然后将右下角的Debug换成Release Debug版本的程序非常大 因为有很多调试的信息 接着 按Ctrl R运行一遍 确保自己的程序没有问题 然后到程序的输出文件夹中 一般在项目目录的上一层目
  • 二分法查找之应用

    待定 1 二分法查找的前提 有序 1 二分法查找元素 例题1 287 寻找重复数 给定一个包含 n 1 个整数的数组 nums 其数字都在 1 到 n 之间 包括 1 和 n 可知至少存在一个重复的整数 假设只有一个重复的整数 找出这个重复
  • python opencv去图片水印

    背景 最近有一个需要为图片去水印的需求 于是各种折腾开始 背景了解图片标准 图片使用RGB编码 RGB色彩模式是工业界的一种颜色标准 是通过对红 R 绿 G 蓝 B 三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色 RGB即是代