OpenCV基础

OpenCV(Open Source Computer Vision Library)是一个跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法

环境搭建

#python沙箱环境

virtualenv opencvenv

source opencvenv/bin/activate

pip install cryptography ndg-httpsclient #某些python版本需要的几个兼容包

pip install numpy #opencv的依赖

#我这里直接pip安装pyopencv不成功

#换其他方法,直接从yum包里拷贝opencv的python wrapper

sudo yum install opencv-python

cp /usr/lib64/python2.7/site-packages/cv* opencv_test/cvenv/lib64/python2.7/site-packages/

opencv的常用操作

# -*- coding: utf-8 -*-

import cv2

#矩阵形式读取图像为三维列表,每一维分别代表 行、列、像素,像素维度列表中依次为BGR三个颜色通道

img = cv2.imread("test.jpg")

print img.shape #利用numpy的shape方法显示图像矩阵的三维尺寸信息,例如:(533, 800, 3)

img2 = img.copy() #复制图像

cv2.imwrite('save.jpg', img2) #保存

基于OpenCV的两种去水印方案

1. 基于 inpaint 方法(网上的方法,处理质量较低)

算法理论:基于Telea在2004年提出的基于快速行进的修复算法(FMM算法),先处理待修复区域边缘上的像素点,然后层层向内推进,直到修复完所有的像素点

处理方式:由ui人员制作出黑底白色水印且相同位置的水印蒙版图(必须单通道灰度图),然后使用inpaint方法处理原始图像,具体使用时可把水印区放粗,这样处理效果会好点

# -*- coding: utf-8 -*-

import cv2

src = cv2.imread('src.jpg') # 默认的彩色图(IMREAD_COLOR)方式读入原始图像

mask = cv2.imread('mask.jpg', cv2.IMREAD_GRAYSCALE) # 灰度图(IMREAD_GRAYSCALE)方式读入水印蒙版图像

# 参数:目标修复图像; 蒙版图(定位修复区域); 选取邻域半径; 修复算法(包括INPAINT_TELEA/INPAINT_NS, 前者算法效果较好)

dst = cv2.inpaint(src, mask, 3, cv2.INPAINT_TELEA)

cv2.imwrite('result.jpg', dst)

效果演示

src图:

mask图:

INPAINT_TELEA算法处理效果:

INPAINT_NS算法处理效果:

细致比较的话,INPAINT_TELEA算法处理,水印的隐去效果会稍好点

2. 基于像素的反色中和(处理质量较高)

参考自ps去水印原理,通过一张白底的反色水印图来中和原图水印

# -*- coding: utf-8 -*-

import cv2

import numpy

src = cv2.imread('src.jpg')

mask = cv2.imread('mask.png')

save = numpy.zeros(src.shape, numpy.uint8) #创建一张空图像用于保存

for row in range(src.shape[0]):

for col in range(src.shape[1]):

for channel in range(src.shape[2]):

if mask[row, col, channel] == 0:

val = 0

else:

reverse_val = 255 - src[row, col, channel]

val = 255 - reverse_val * 256 / mask[row, col, channel]

if val < 0: val = 0

save[row, col, channel] = val

cv2.imwrite('result.jpg', save)

src图:

反色水印图:

输出效果图:

python去复杂的水印_两种Python基于OpenCV的固定位置半透明水印去除方案相关推荐

  1. opencv 处理黑夜_Python基于OpenCV的固定位置半透明水印去除两种方案

    1. 基于 inpaint 方法(网上的方法,处理质量较低) 算法理论:基于Telea在2004年提出的基于快速行进的修复算法(FMM算法),先处理待修复区域边缘上的像素点,然后层层向内推进,直到修复 ...

  2. Python基于OpenCV的固定位置半透明水印去除方案

    from : https://mubiu.com/blog/python3-opencv -- coding: utf-8 -- import cv2 mask.png 与src.jpg尺寸相同并且黑 ...

  3. python怎么定义全局字典_一种Python全局配置规范以及其魔改

    0x01 模块 or global 很多初学者有个误区,就是在Python中需要配置一个全局的参数时,首先想到的是global关键字,而实际上global不是干这个事的,global的功能是在将局部作 ...

  4. php给网页加水印_两种php给图片加水印的实现代码

    PHP最简单的加水印方法 $img = imagecreatefromjpeg($filename); $logo = imagecreatefromjpeg($filename); /*imagec ...

  5. python实现二分查找算法_两种方法实现Python二分查找算法

    一. arr=[1,3,6,9,10,20,30] def findnumber(l,h,number): mid=(l+h)//2 if arr[mid]==number: print(" ...

  6. python爬虫编程100例_哪种Python程序员最赚钱?爬虫数据告诉你!

    世界上有三种宝贵的东西: 知识.粮食和友谊. 那么,1 块钱,你能买到什么呢? 骑一次共享单车 买 2 包辣条 1/190 件格子衬衫 1/299 支口红 1/10099 个 iPhone XS 但是 ...

  7. python repair修复功能_详解Python修复遥感影像条带的两种方式

    GDAL修复Landsat ETM+影像条带 Landsat7 ETM+卫星影像由于卫星传感器故障,导致此后获取的影像出现了条带.如下图所示, 影像中均匀的布满条带. 使用GDAL修复影像条带的代码如 ...

  8. 简单介绍python连接telnet和ssh的两种方式

    本文主要介绍了python连接telnet和ssh的两种方式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Telnet 连接方式 #!/usr/bin/env p ...

  9. python 读取wav 音频文件的两种方式

    python 中,常用的有两种可以读取wav音频格式的方法,如下所示: 1 import scipy 2 from scipy.io import wavfile 3 4 import soundfi ...

最新文章

  1. 正则表达式中模式修正符作用详解(i、g、m、s、x、e)
  2. 经典C语言程序100例之十二
  3. Silverlight 下换肤的实现
  4. 泛型通用函数的一些特殊问题的解决方法
  5. javaSE知识点汇总
  6. Spring Boot文档阅读笔记-FileHandling解析及抓包分析
  7. ffmpeg 分辨率 压缩_Ffmpeg 视频压缩的几个关键参数
  8. 机器视觉用c还是python_机器视觉_opencv-python环境搭建
  9. PyTorch 1.0 中文官方教程:聊天机器人教程
  10. python中的异常如何处理
  11. python设计题60元按商品的比例平分_团体程序设计天梯赛-练习集(5分题集)Python 3...
  12. uniyu 雷达波束_Unity使用TUIO协议接入雷达
  13. ppt如何利用视频作为背景
  14. 解决deep freeze冰点还原软件无法冻结的问题:计算机正在完成Deep Freeze冰点检测到的待定Windows更新
  15. 当一个好领导必须要具备的三大能力
  16. eclipse次行风格的设置
  17. centos 安装Htseq_APPNode管理面板安装使用教材
  18. NFS客户端不能unmount 之解决
  19. HP 暗夜精灵2 pro 拆机加内存
  20. Excel只保留2位小数,删掉其他小数位

热门文章

  1. 虚拟化技术—基础(1)
  2. ro素质点模拟器_仙境传说RO:最具人气职业猎人成长攻略手册
  3. 数据库运行sql文件
  4. 基于SPI协议的Flash驱动控制-扇区擦除
  5. 大学生用计算机,大学生计算机科学基础
  6. 惠普win10一键还原_惠普win10一键还原怎么用 - 卡饭网
  7. OLAP介绍(zhuanzai)
  8. 云服务器需要防火墙吗?防火墙如何启用设置?
  9. Week of 3.28
  10. python web实战视频教程_2018Python Flask打造一个视频网站实战视频教程