本篇內容主要講解“怎么利用Python和OpenCV對圖像進行加水印”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么利用Python和OpenCV對圖像進行加水印”吧!
在本文中,我將帶著大家使用 Python 和 OpenCV 對圖像進行加水印。水印有意在圖像上留下文本/標志,很多博主會使用水印來保護圖像的版權。使用水印我們可以確保圖像的所有者是在圖像上印制水印的人。
水印前的圖片:
logo.png:
# 使用 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
在這里,我們使用了OpenCV 中的shape函數,它返回圖像的高度和寬度的元組。
現在,我們將計算圖像中心的坐標,因為我要將水印放置在圖像的中心,你們也可以選擇其他位置。
# 計算中心計算中心的坐標,我們將在其中放置水印 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)
要為圖像添加水印,我們將使用 OpenCV 中的 addWeighted 函數。首先,我們將提供要放置水印的目的地,然后將該目的地傳遞給帶有圖像和徽標的 addWeighted 函數。
語法: 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)
之后,我們只是顯示結果并保存輸出。為了顯示我們使用imshow 函數的輸出并寫入/保存圖像,我們在兩個函數中都使用imwrite 函數,首先我們必須提供文件名作為參數,然后是文件本身。cv2.waitKey(0) 用于等待直到用戶按下 Esc 鍵,之后 cv2.destroyAllWindows 函數將關閉窗口。
# 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()
? 下面是完整的實現:
# 使用 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()
輸出:
到此,相信大家對“怎么利用Python和OpenCV對圖像進行加水印”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。