当前位置:网站首页>[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
边栏推荐
- H5 audio tag custom style modification and adding playback control events
- Qtreeview+ custom model implementation example
- mmclassification 标注文件生成
- PHP book borrowing management system, with complete functions, supports user foreground management and background management, and supports the latest version of PHP 7 x. Database mysql
- 【OpenCV 例程200篇】218. 多行倾斜文字水印
- Normal vector point cloud rotation
- 2022-2028 global gasket metal plate heat exchanger industry research and trend analysis report
- 自动化的优点有哪些?
- 2022-2028 global industry research and trend analysis report on anterior segment and fundus OTC detectors
- Write a jison parser from scratch (1/10):jison, not JSON
猜你喜欢
回复评论的sql
SQL replying to comments
Dynamic address book
Hands on deep learning (40) -- short and long term memory network (LSTM)
Hands on deep learning (III) -- Torch Operation (sorting out documents in detail)
MySQL develops small mall management system
Hands on deep learning (33) -- style transfer
JDBC and MySQL database
2022-2028 global industry research and trend analysis report on anterior segment and fundus OTC detectors
Nuxt reports an error: render function or template not defined in component: anonymous
随机推荐
Write a jison parser (7/10) from scratch: the iterative development process of the parser generator 'parser generator'
2022-2028 global industry research and trend analysis report on anterior segment and fundus OTC detectors
Kotlin: collection use
Servlet基本原理与常见API方法的应用
How does idea withdraw code from remote push
Go context basic introduction
Exercise 7-8 converting strings to decimal integers (15 points)
Advanced technology management - how to design and follow up the performance of students at different levels
System.currentTimeMillis() 和 System.nanoTime() 哪个更快?别用错了!
2021-08-10 character pointer
Golang type comparison
Lauchpad X | 模式
Hands on deep learning (41) -- Deep recurrent neural network (deep RNN)
Hands on deep learning (34) -- sequence model
Deadlock in channel
【OpenCV 例程200篇】218. 多行倾斜文字水印
Launpad | Basics
Normal vector point cloud rotation
Pcl:: fromrosmsg alarm failed to find match for field 'intensity'
Exercise 8-10 output student grades (20 points)