linuxsir首页 LinuxSir.Org | Linux、BSD、Solaris、Unix | 开源传万世,因有我参与欢迎您!
网站首页 | 设为首页 | 加入收藏
您所在的位置:主页 > Linux基础建设 >

Python+OpenCV为图片添加中文水印与图片水印

时间:2019-05-14  来源:未知  作者:admin666

OpenCV中在图片上输出中文一般有两种解决办法:

  • 一种需要借助FreeType库实现。FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件。但使用FreeType需要下载库并重新编译,但这种方法及其麻烦,完全不建议尝试
  • 在Python中,可以借助PIL(Python Imaging Library)模块和OpenCV对象进行数据类型转换实现,相对简单很多,需要做的只是对图像进行OpenCV格式和PIL格式的相互转换。

一、水印为英文

直接使用cv2中的putText

import cv2

img1 = cv2.imread('linuxidc.com.jpg',cv2.IMREAD_COLOR)

text = 'www.linuxidc.com'
pos = (10,150)
font_type = 4
font_size = 2
color = (255,0,0)
bold = 1

#图片,文字,位置,字体,字号,颜色,厚度
cv2.putText(img1,text,pos, font_type, font_size, color,bold)
cv2.imshow('www.linuxidc.com',img1)
cv2.waitKey(0)

?效果图如下:

Python+OpenCV为图片添加中文水印 

二、水印为中文

这种情况下处理较为复杂,因为cv2的putText直接输出中文会出现乱码的情况。

opencv对象转PIL对象,注意将opencv的BGR通道转成RGB通道
Image.fromarray(cv2.cvtColor(img1, cv2.COLOR_BGR2RGB))

PIL对象转opencv对象,注意将PIL的RGB通道转成BGR通道
cv_img = cv2.cvtColor(np.asarray(pil_image),cv2.COLOR_RGB2BGR)

import cv2
from PIL import Image,ImageFont,ImageDraw
import numpy as np

img1 = cv2.imread('linuxidc.com.jpg',cv2.IMREAD_COLOR)

pil_image = Image.fromarray(cv2.cvtColor(img1, cv2.COLOR_BGR2RGB))

font = ImageFont.truetype('NotoSerifCJK-Regular.ttc', 40)
color = (0,0,255)
pos = (10,150)
text = u"Linux公社www.linuxidc.com"

draw = ImageDraw.Draw(pil_image)
draw.text(pos,text,font=font,fill=color)

cv_img = cv2.cvtColor(np.asarray(pil_image),cv2.COLOR_RGB2BGR)

cv2.imshow('www.linuxidc.com',cv_img)

cv2.waitKey(0)

效果如如下:

Python+OpenCV为图片添加中文水印

三、图片水印

from PIL import Image
im = Image.open("linuxidc.com.jpg")
mark=Image.open("linuxidc.png")
layer=Image.new('RGBA', im.size, (0,0,0,0))
layer.paste(mark, (im.size[0]-220,im.size[1]-520))
out=Image.composite(layer,im,layer)
out.show()

效果图如下:

图片水印

Python skimage模块的安装

pip3 install scikit-image

更多Python相关信息见Python 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=17

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

友情链接
  • WSL Arch Linux已正式登陆Microsoft Store应用商店
  • GNU调试器 GDB 8.3 发布及安装更新,支持RISC
  • OpenMandriva Lx 4.0将Python 2排除在其基本操作系统之外
  • Linux 5.1.1 发布,几个修复
  • Wine
  • Android Studio 3.5 Beta 发布,性能优化改进
  • Firefox和GNOME最终可以在Linux 5.2的AFS文件系统上运行
  • DifferentialEquations.jl v6.4.0 发布,用于微分方程高性能求解
  • RHEL 8发布后,用户等待CentOS 8的推出
  • Libinput 1.13.2 发布,为苹果TouchPad提供更好的手指检测功能
  • GTK 3.96 发布,作为向GTK 4.0迈进的又一步
  • Phoronix Test Suite v8.8.0m3 发布,开源基准测试
  • CentOS 8.0作为Red Hat Enterprise Linux 8.0社区版重新构建的进
  • GNOME 3.32.2桌面环境发布,最新的bug和安全修复
  • LWJGL 3.2.2 发布,针对Vulkan 1.1和其他新包的更新
  • Mesa 19.0.4 发布,许多RADV, RadeonSI和Intel修复
  • Krita 4.2 Alpha带来性能改进,其他数字绘画增强功能
  • 英特尔为BFloat16添加GCC 10和LLVM Clang 9编译器支持
  • ZFS On Linux 0.8
  • 适用于Ubuntu手机的Ubuntu Touch OTA
  • Kaidan作为Jabber/XMPP聊天客户端加入KDE
  • Google在Chrome中发布新的Cookie控件,改善用户隐私
  • 微软开源PowerToys,计划推出Windows 10版本
  • Linux内核将很快默认情况启用“
  • 由于证书问题,Mozilla延迟Firefox 67推出
  • Radeon ROCm 2.4 发布,兼容TensorFlow 2.0
  • Wine 4.8采用Unicode 12.0更新,更好地支持操纵杆
  • Google宣布Kotlin为Android应用程序开发的首选语言
  • 面向Windows 10的Chromium Microsoft Edge Beta泄露
  • KDE Plasma 5.16推出重写的通知系统
  • 币安交易所被黑客入侵,超过7000比特币被盗
  • Vivaldi 2.5 发布,世界上第一个与Razer Chroma集成的Web浏览器
  • Debian 10 “Buster” 目前在GNOME默认使用Wayland,但仍有可能
  • Linux 5.2中的XFS获得“大量新东西”
  • Firefox 66.0.5发布,包含针对扩展Bug的更多修复
  • Unity 2019.2 Beta 发布,带来许多Linux和Vulkan补丁
  • qBittorrent 4.1.6发布! 如何在Ubuntu 18.04中安装它
  • Linux新闻 第971页
  • MongoDB 日志切割三种方式
  • MongoDB Oplog深入理解
  • MongoDB 副本集搭建与管理详解
  • MongoDB 备份与还原 mongodump、mongorestore
  • MongoDB 常用的几大GUI工具
  • 微软开源Xamarin API Docs
  • Chrome浏览器将不再允许网站劫持后退按钮
  • 福彩3d试机号查询
  • 彩票平台
  • 福彩3d开奖直播
  • 凤凰时时彩平台网址
  • 温岭六家统记牌器