最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何利用Python和OpenCV對圖像進(jìn)行加水印詳解

 更新時(shí)間:2021年10月21日 09:20:45   作者:海擁  
Python使用opencv是因?yàn)橛X得它足夠強(qiáng)大,很多圖像處理這塊都是用的它,最近就用opencv添加個(gè)水印,這篇文章主要給大家介紹了關(guān)于如何利用Python和OpenCV對圖像進(jìn)行加水印的相關(guān)資料,需要的朋友可以參考下

前言

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

水印前的圖片:

logo.png:

🌌 第 1 步:導(dǎo)入 OpenCV 并讀取logo和要應(yīng)用水印的圖像

# 使用 OpenCV 導(dǎo)入 cv2 的水印圖像
import cv2

# 導(dǎo)入我們將要使用的logo
logo = cv2.imread("logo.png")

# 導(dǎo)入我們要應(yīng)用水印的圖像
img = cv2.imread("haiyong.png")

💨 第 2步:計(jì)算兩個(gè)圖像的高度和寬度

計(jì)算兩個(gè)圖像的高度和寬度,并將它們保存到其他變量中。我們需要計(jì)算寬度和高度,因?yàn)槲覀円獙⑺》胖迷趫D像上的某個(gè)位置,為此,我們只需要知道徽標(biāo)和圖像的正確寬度和高度。

# 計(jì)算logo的尺寸高度和寬度
h_logo, w_logo, _ = logo.shape

# 圖像的高度和寬度
h_img, w_img, _ = img.shape

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

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

現(xiàn)在,我們將計(jì)算圖像中心的坐標(biāo),因?yàn)槲乙獙⑺》胖迷趫D像的中心,你們也可以選擇其他位置。

# 計(jì)算中心計(jì)算中心的坐標(biāo),我們將在其中放置水印
center_y = int(h_img/2)
center_x = int(w_img/2)

# 從上、下、右、左計(jì)算
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ù)。首先,我們將提供要放置水印的目的地,然后將該目的地傳遞給帶有圖像和徽標(biāo)的 addWeighted 函數(shù)。

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

在我們的例子中,source1 是我們想要放置logo的圖像,alpha 是logo的不透明度,source2 是logo本身,我們將相應(yīng)地設(shè)置 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ù)的輸出并寫入/保存圖像,我們在兩個(gè)函數(shù)中都使用imwrite 函數(shù),首先我們必須提供文件名作為參數(shù),然后是文件本身。cv2.waitKey(0) 用于等待直到用戶按下 Esc 鍵,之后 cv2.destroyAllWindows 函數(shù)將關(guān)閉窗口。

# 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()

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

# 使用 OpenCV 導(dǎo)入 cv2 的水印圖像
import cv2

# 導(dǎo)入我們將要使用的logo
logo = cv2.imread("logo.png")

# 導(dǎo)入我們要應(yīng)用水印的圖像
img = cv2.imread("haiyong.png")

# 計(jì)算logo的尺寸高度和寬度
h_logo, w_logo, _ = logo.shape

# 圖像的高度和寬度
h_img, w_img, _ = img.shape

# 計(jì)算中心計(jì)算中心的坐標(biāo),我們將在其中放置水印
center_y = int(h_img/2)
center_x = int(w_img/2)

# 從上、下、右、左計(jì)算
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é)

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

相關(guān)文章

  • 自定義python日志文件系統(tǒng)實(shí)例

    自定義python日志文件系統(tǒng)實(shí)例

    這篇文章主要介紹了自定義python日志文件系統(tǒng)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python sqlite3事務(wù)處理方法實(shí)例分析

    Python sqlite3事務(wù)處理方法實(shí)例分析

    這篇文章主要介紹了Python sqlite3事務(wù)處理方法,結(jié)合具體實(shí)例形式分析了Python針對sqlite3事務(wù)處理的操作技巧,代碼中包含詳盡的注釋,需要的朋友可以參考下
    2017-06-06
  • python腳本之一鍵移動自定格式文件方法實(shí)例

    python腳本之一鍵移動自定格式文件方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于python腳本之一鍵移動自定格式文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 使用Django清空數(shù)據(jù)庫并重新生成

    使用Django清空數(shù)據(jù)庫并重新生成

    這篇文章主要介紹了使用Django清空數(shù)據(jù)庫并重新生成,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • django寫單元測試的方法

    django寫單元測試的方法

    這篇文章主要介紹了django寫單元測試的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • 解決Cannot?set?up?a?python?SDK?at?Python問題

    解決Cannot?set?up?a?python?SDK?at?Python問題

    本文主要介紹了解決Cannot?set?up?a?python?SDK?at?Python問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • pycharm日志總是彈出“無法運(yùn)行Git,未安裝Git”的問題

    pycharm日志總是彈出“無法運(yùn)行Git,未安裝Git”的問題

    這篇文章主要介紹了pycharm日志總是彈出“無法運(yùn)行Git,未安裝Git”的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python動態(tài)導(dǎo)入模塊的方法實(shí)例分析

    Python動態(tài)導(dǎo)入模塊的方法實(shí)例分析

    這篇文章主要介紹了Python動態(tài)導(dǎo)入模塊的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python動態(tài)導(dǎo)入系統(tǒng)模塊、自定義模塊以及模塊列表的相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • 國產(chǎn)麒麟系統(tǒng)kylin部署python項(xiàng)目詳細(xì)步驟

    國產(chǎn)麒麟系統(tǒng)kylin部署python項(xiàng)目詳細(xì)步驟

    這篇文章主要給大家介紹了關(guān)于國產(chǎn)麒麟系統(tǒng)kylin部署python項(xiàng)目的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • python使用pygame模塊實(shí)現(xiàn)坦克大戰(zhàn)游戲

    python使用pygame模塊實(shí)現(xiàn)坦克大戰(zhàn)游戲

    這篇文章主要為大家詳細(xì)介紹了python使用pygame模塊實(shí)現(xiàn)坦克大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05

最新評論

大厂| 金川县| 青浦区| 留坝县| 靖西县| 彰武县| 扎鲁特旗| 清丰县| 寻甸| 凤庆县| 留坝县| 盐亭县| 竹溪县| 海盐县| 特克斯县| 曲松县| 海口市| 吉水县| 如东县| 马边| 新晃| 桃园市| 孟津县| 武夷山市| 额敏县| 陆丰市| 沂南县| 杨浦区| 正安县| 安新县| 桐梓县| 宝坻区| 上蔡县| 黎川县| 长乐市| 尼玛县| 双城市| 大冶市| 道孚县| 南投县| 巴彦淖尔市|