我們可以使用 OpenCV 制作水印嗎

這是使用 HTML 代碼制作的,但問題是我想使用 OpenCV 或枕頭或任何其他真正有用的軟體包制作相同的東西
我已經研究了一下,走到了這一步
def generate_watermark_image(self, banner_details):
banner_image = requests.get(banner_details.get('banner_url'))
open('image.jpg', 'wb').write(banner_image.content)
background_image = Image.open('image.jpg').convert("RGBA")
actual_width, actual_height = background_image.size
watermark_text = Image.new('RGBA', background_image.size, (255,255,255,0))
font_size = '50'
if actual_width>1000 and actual_height>1000:
font_size = '100'
title_font = ImageFont.truetype("arial", int(font_size))
font_width, font_height = title_font.getsize('PLOTCH')
padding_left = int((banner_details.get('width')/2)-(font_width/2))
padding_top = int((banner_details.get('height')/2)-(font_height*2))
d = ImageDraw.Draw(watermark_text)
d.text((padding_left, padding_top), "PLOTCH", fill=(255, 255, 255, 150), font=title_font)
combined = Image.alpha_composite(background_image, watermark_text)
background_image = cv2.cvtColor(np.array(combined), cv2.COLOR_RGB2BGR)
cv2.imwrite("font/minion.png", background_image)
return background_image
使用我的功能,我只能做到這一點
,我們可以以某種方式使內部部分透明,就像我們-webkit-text-fill-color: transparent; 在 html 中使用的
那樣
uj5u.com熱心網友回復:
這是在 Python/OpenCV 中創建大綱文本的一種方法。
基本上,在黑色影像上繪制白色文本,然后在白色影像上繪制較小的黑色文本。然后將其用作蒙版以混合彩色影像和原始影像。
輸入:

import cv2
import numpy as np
# read input image
img = cv2.imread('lena.jpg')
ht, wd = img.shape[:2]
# create black image
mask = np.zeros_like(img)
# put white text on black image at desired coordinates
#cv2.putText(label_img, str(index), (x,y), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,0,255), 2)
mask = cv2.putText(mask, "PLOTCH", (50, 128), cv2.FONT_HERSHEY_SIMPLEX, 1.5, (255,255,255), 5)
# put smaller black text over white text
mask = cv2.putText(mask, "PLOTCH", (50, 128), cv2.FONT_HERSHEY_SIMPLEX, 1.5, (0,0,0), 2)
# create text color image (white, for example)
color_img = np.full_like(img, (255,255,255))
# blend input with color image using mask
result = np.where(mask==(255, 255, 255), color_img, img)
# save result
cv2.imwrite("lena_outline_mask.jpg", mask)
cv2.imwrite("lena_outline_text.jpg", result)
# show images
cv2.imshow("mask", mask)
cv2.imshow("result", result)
cv2.waitKey(0)
面具圖片:

結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/345434.html
下一篇:OpenCVexpm()函式
