当前位置:网站首页>[200 opencv routines] 218 Multi line italic text watermark
[200 opencv routines] 218 Multi line italic text watermark
2022-07-04 09:51:00 【Xiaobai youcans】
OpenCV routine 200 piece General catalogue
【youcans Of OpenCV routine 200 piece 】218. Multi line oblique text watermark
8.1 Add multi line italic text watermark
A watermark is a sign superimposed on an image 、 Signature 、 Text or pattern , Used to protect the copyright of images .
First, add an image or text on the black background to make a watermark , Reuse cv.addWeight function , The watermark is added to the original image by overlapping and mixing .
The watermark pattern or text area can also be used as a mask , Use cv.add Function to modify the pixel value of the mask area , Realize adding the watermark to the original image .
routine A4.10: Add a watermark to the image
# A4.10 Add a watermark to the image
img = cv.imread("../images/imgLena.tif", 1) # Load the original image
h, w = img.shape[0], img.shape[1]
# # Generate watermark pattern
# logo = cv.imread("../images/logoXupt.png", 0) # load Logo
# logoResize = cv.resize(logo, (100,100)) # Adjust the size of the picture
# grayMark = np.zeros(img.shape[:2], np.uint8) # Watermark black background
# grayMark[10:110,10:110] = logoResize # Generate watermark pattern
# Generate text watermark
mark = np.zeros(img.shape[:2], np.uint8) # Black background
for i in range(h//100):
cv.putText(mark, "youcans2022", (50,70+100*i), cv.FONT_HERSHEY_SIMPLEX, 1.5, 255, 2)
MAR = cv.getRotationMatrix2D((w//2,h//2), 45, 1.0) # rotate 45 degree
grayMark = cv.warpAffine(mark, MAR, (w,h)) # Rotation transformation , The default is black fill
# Add a watermark to the image 1
markC3 = cv.merge([grayMark, grayMark, grayMark])
imgMark1 = cv.addWeighted(img, 1, markC3, 0.25, 0) # Weighted addition image fusion
# Add a watermark to the image 2
imgMark2 = cv.add(img, 64, mask=grayMark) # Use the watermark pattern as a mask
plt.figure(figsize=(9, 6))
plt.subplot(221), plt.title("original"), plt.axis('off')
plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
plt.subplot(222), plt.title("watermark"), plt.axis('off')
plt.imshow(cv.cvtColor(markC3, cv.COLOR_BGR2RGB))
plt.subplot(223), plt.title("watermark embedded"), plt.axis('off')
plt.imshow(cv.cvtColor(imgMark1, cv.COLOR_BGR2RGB))
plt.subplot(224), plt.title("watermark embedded"), plt.axis('off')
plt.imshow(cv.cvtColor(imgMark1, cv.COLOR_BGR2RGB))
plt.tight_layout()
plt.show()
【 At the end of this section 】
Copyright notice :
[email protected] Original works , Reprint must be marked with the original link :(https://blog.csdn.net/youcans/article/details/125506829)
Copyright 2022 youcans, XUPT
Crated:2022-6-28
217. Mouse interaction to obtain polygon area
218. Multi line oblique text watermark
边栏推荐
- Svg image quoted from CodeChina
- Histogram equalization
- Hands on deep learning (37) -- cyclic neural network
- Machine learning -- neural network (IV): BP neural network
- mmclassification 标注文件生成
- 【leetcode】540. A single element in an ordered array
- Four common methods of copying object attributes (summarize the highest efficiency)
- 品牌连锁店5G/4G无线组网方案
- Write a jison parser from scratch (5/10): a brief introduction to the working principle of jison parser syntax
- Basic data types in golang
猜你喜欢
入职中国平安三周年的一些总结
IIS configure FTP website
How can people not love the amazing design of XXL job
xxl-job惊艳的设计,怎能叫人不爱
自动化的优点有哪些?
5g/4g wireless networking scheme for brand chain stores
C # use gdi+ to add text to the picture and make the text adaptive to the rectangular area
Write a mobile date selector component by yourself
Hands on deep learning (38) -- realize RNN from scratch
Intelligent gateway helps improve industrial data acquisition and utilization
随机推荐
About the for range traversal operation in channel in golang
Golang defer
什么是 DevSecOps?2022 年的定义、流程、框架和最佳实践
Pcl:: fromrosmsg alarm failed to find match for field 'intensity'
Dynamic address book
Hands on deep learning (38) -- realize RNN from scratch
How does idea withdraw code from remote push
智能网关助力提高工业数据采集和利用
Application of safety monitoring in zhizhilu Denggan reservoir area
Leetcode (Sword finger offer) - 35 Replication of complex linked list
Kotlin:集合使用
Launpad | 基礎知識
Servlet基本原理与常见API方法的应用
直方图均衡化
C语言指针面试题——第二弹
Laravel文档阅读笔记-How to use @auth and @guest directives in Laravel
Hands on deep learning (40) -- short and long term memory network (LSTM)
QTreeView+自定义Model实现示例
Nuxt reports an error: render function or template not defined in component: anonymous
Exercise 7-8 converting strings to decimal integers (15 points)