人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

如何利用Python和OpenCV對圖像進行加水印詳解

發(fā)布日期:2021-12-22 02:12 | 文章來源:腳本之家

在本文中,我將帶著大家使用 Python 和 OpenCV 對圖像進行加水印。水印有意在圖像上留下文本/標志,很多博主會使用水印來保護圖像的版權(quán)。使用水印我們可以確保圖像的所有者是在圖像上印制水印的人。

水印前的圖片:

logo.png:

🌌 第 1 步:導入 OpenCV 并讀取logo和要應用水印的圖像

# 使用 OpenCV 導入 cv2 的水印圖像
import cv2
# 導入我們將要使用的logo
logo = cv2.imread("logo.png")
# 導入我們要應用水印的圖像
img = cv2.imread("haiyong.png")

💨 第 2步:計算兩個圖像的高度和寬度

計算兩個圖像的高度和寬度,并將它們保存到其他變量中。我們需要計算寬度和高度,因為我們要將水印放置在圖像上的某個位置,為此,我們只需要知道徽標和圖像的正確寬度和高度。

# 計算logo的尺寸高度和寬度
h_logo, w_logo, _ = logo.shape
# 圖像的高度和寬度
h_img, w_img, _ = img.shape

在這里,我們使用了OpenCV 中的shape函數(shù),它返回圖像的高度和寬度的元組。

🚀 第 3 步:將水印放置在圖像的中心

現(xiàn)在,我們將計算圖像中心的坐標,因為我要將水印放置在圖像的中心,你們也可以選擇其他位置。

# 計算中心計算中心的坐標,我們將在其中放置水印
center_y = int(h_img/2)
center_x = int(w_img/2)
# 從上、下、右、左計算
top_y = center_y - int(h_logo/2)
bottom_y = top_y + h_logo
right_x = left_x + w_logo
left_x = center_x - int(w_logo/2)

🍺 第 4 步:使用 OpenCV 中的 addWeighted 函數(shù)

要為圖像添加水印,我們將使用 OpenCV 中的 addWeighted 函數(shù)。首先,我們將提供要放置水印的目的地,然后將該目的地傳遞給帶有圖像和徽標的 addWeighted 函數(shù)。

語法: cv2.addWeighted(source1, alpha, source2, beta, gamma)

在我們的例子中,source1 是我們想要放置logo的圖像,alpha 是logo的不透明度,source2 是logo本身,我們將相應地設置 beta為1,不透明度的 alpha 和 gamma分別為 1 和 0。

# 給圖片添加水印
destination = img[top_y:bottom_y, left_x:right_x]
result = cv2.addWeighted(destination, 1, logo, 1, 0)

🎨 第 5 步:顯示結(jié)果并保存輸出

之后,我們只是顯示結(jié)果并保存輸出。為了顯示我們使用imshow 函數(shù)的輸出并寫入/保存圖像,我們在兩個函數(shù)中都使用imwrite 函數(shù),首先我們必須提供文件名作為參數(shù),然后是文件本身。cv2.waitKey(0) 用于等待直到用戶按下 Esc 鍵,之后 cv2.destroyAllWindows 函數(shù)將關閉窗口。

# displaying and saving image
img[top_y:bottom_y, left_x:right_x] = result
cv2.imwrite("watermarked.jpg", img)
cv2.imshow("Watermarked Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

🛹 下面是完整的實現(xiàn):

# 使用 OpenCV 導入 cv2 的水印圖像
import cv2
# 導入我們將要使用的logo
logo = cv2.imread("logo.png")
# 導入我們要應用水印的圖像
img = cv2.imread("haiyong.png")
# 計算logo的尺寸高度和寬度
h_logo, w_logo, _ = logo.shape
# 圖像的高度和寬度
h_img, w_img, _ = img.shape
# 計算中心計算中心的坐標,我們將在其中放置水印
center_y = int(h_img/2)
center_x = int(w_img/2)
# 從上、下、右、左計算
top_y = center_y - int(h_logo/2)
left_x = center_x - int(w_logo/2)
bottom_y = top_y + h_logo
right_x = left_x + w_logo
# 給圖片添加水印
destination = img[top_y:bottom_y, left_x:right_x]
result = cv2.addWeighted(destination, 1, logo, 1, 0)
# 顯示和保存圖像
img[top_y:bottom_y, left_x:right_x] = result
cv2.imwrite("watermarked.jpg", img)
cv2.imshow("Watermarked Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

輸出:

總結(jié)

到此這篇關于如何利用Python和OpenCV對圖像進行加水印的文章就介紹到這了,更多相關Python和OpenCV對圖像加水印內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部