Python OpenCV 之圖像的疊加,圖像處理取經之旅第 16 天丨【百變AI秀】

      網友投稿 1694 2025-04-02

      今天的學習的內容是:通過 Python OpenCV 對圖像實現疊加操作,本文只涉及一個函數,即cv2.addWeighted。

      cv2.addWeighted

      該函數的完整表述為:Python-OpenCV 圖像疊加 or 圖像混合加權實現。

      函數原型如下:

      dst = cv2.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]])

      參數說明(哈哈,這是官方的,點擊打開官方說明):

      src1 – first input array.

      alpha – weight of the first array elements.

      src2 – second input array of the same size and channel number as src1.

      beta – weight of the second array elements.

      dst – output array that has the same size and number of channels as the input arrays.

      gamma – scalar added to each sum.

      dtype – optional depth of the output array; when both input arrays have the same depth, dtype can be set to -1, which will be equivalent to src1.depth().

      參數翻譯如下:

      src1, src2:需要融合疊加的兩副圖像,要求大小和通道數相等

      alpha:src1 的權重

      beta:src2 的權重

      gamma:gamma 修正系數,不需要修正設置為 0

      dst:可選參數,輸出結果保存的變量,默認值為 None

      dtype:可選參數,輸出圖像數組的深度,即圖像單個像素值的位數(如 RGB 用三個字節表示,則為 24 位),選默認值 None 表示與源圖像保持一致。

      返回值:融合疊加的結果圖像

      官方手冊也給出了最終的結果:

      dst = src1 × alpha + src2 × beta + gamma;

      上面的式子理解為,結果圖像 = 圖像 1× 系數 1+圖像 2× 系數 2+亮度調節量

      測試代碼如下:

      import cv2 as cv src1 = cv.imread("./123.jpg") src2 = cv.imread("./456.png") c = cv.addWeighted(src1, 0.4, src2, 0.6, 0) cv.imshow("addWeighted", c) cv.waitKey(0)

      運行之后疊加出的效果圖如下:

      如果兩個圖片的尺寸不同,可以手動調整,也可以通過 resize 進行調整。

      img2 = cv2.resize(img, (w,h), interpolation=cv2.INTER_AREA)

      在檢索資料的時候發現了另一個好玩的函數,即 createTrackbar,可以創建一個滾動條,我們也同時學習一下吧。

      cv2.createTrackbar

      該函數的作用是在 opencv 使用滑動條,函數原型如下:

      cv2.createTrackbar(trackbarName, windowName, value, count, onChange)

      參數說明:

      trackbarName:滑動條的名字;

      windowName:滑動條被放置的窗口的名字;

      value:滑動條默認值;

      count:滑動條的調節的范圍(0~count);

      onChange:調節滑動條時調用的回調函數名。

      與此對應的還有一個獲取滑動條值的函數,原型是:

      value = cv2.getTrackbarPos(trackbarName, windowName)

      參數說明:

      trackbarName:滑動條的名字;

      windowName:滑動條被放置窗口的名字。

      返回值:滑動條的數值

      測試代碼如下(拖動滑動條,實現圖片的漸變):

      import cv2 as cv import numpy as np src1 = cv.imread("./123.jpg") src2 = cv.imread("./456.png") # 滾動條拖動 def on_change(x): pass # 創建一個黑色背景的窗口,大小任意,后面會被修改 img = np.zeros((100, 100, 3), np.uint8) cv.namedWindow("img") cv.createTrackbar("a", "img", 0, 100, on_change) while(1): cv.imshow("img", img) # 按鍵盤上的 esc 退出。 k = cv.waitKey(1) & 0xFF if k == 27: break # 獲取滑動條的值 r = cv.getTrackbarPos('a', "img") # 設置系數 print(r) r = float(r)/100.0 # 默認情況下 src1 完全展示,逐步過渡到 src2 img = cv.addWeighted(src1, r, src2, 1.0-r, 0) cv.destroyAllWindows()

      運行效果如下圖所示。

      還找到了一個漸變效果,不需要拖動滑動條也可以實現圖片切換。

      import cv2 import numpy as np step_list = [float(0.02 * x) for x in range(0, 51)] print(step_list) img1 = cv2.imread("./123.jpg") img2 = cv2.imread("./456.png") cv2.imshow("show", img1) for i in step_list: res = cv2.addWeighted(img1, i, img2, (1-i), 0) cv2.imshow("show", res) cv2.waitKey(60) if cv2.waitKey(0) == 27: cv2.destroyAllWindows()

      Python OpenCV 之圖像的疊加,圖像處理取經之旅第 16 天丨【百變AI秀】

      運行結果自行找兩張相同大小的圖片進行嘗試吧。

      OpenCV 尾聲

      1 個小時又過去了,對 Python OpenCV 相關的知識點,你掌握了嗎?

      空閑之余,可以訂閱橡皮擦的爬蟲百例課程學習爬蟲知識。

      今天是持續寫作的第

      55

      / 100 天。

      如果你有想要交流的想法、技術,歡迎在評論區留言。

      博主 ID:夢想橡皮擦,希望大家

      評論

      【百變AI秀】有獎征文火熱進行中:https://bbs.huaweicloud.com/blogs/296704

      OpenCV Python 圖像處理

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel2010表格里不顯示零值的方法(excel表格如何不顯示零值)
      下一篇:Excel使用FLOOR函數舍入數值
      相關文章
      91亚洲国产成人久久精品网站| 亚洲视频在线观看2018| 亚洲狠狠狠一区二区三区| 久久久青草青青亚洲国产免观| 亚洲中文无韩国r级电影| 亚洲第一区在线观看| 亚洲精品又粗又大又爽A片| avtt天堂网手机版亚洲| 久久久久精品国产亚洲AV无码| 亚洲性色高清完整版在线观看| 亚洲视频一区二区在线观看| 精品亚洲成AV人在线观看| 精品亚洲成AV人在线观看| 亚洲最大在线观看| 亚洲国产精品yw在线观看| 亚洲国产日韩在线| 亚洲精品国产日韩| 亚洲精品无码mⅴ在线观看| 亚洲av日韩专区在线观看| 日韩亚洲人成网站| 亚洲精品无码专区久久同性男| 亚洲国产精品专区在线观看| 亚洲国产成人久久综合区| 亚洲一区精品伊人久久伊人| 亚洲无av在线中文字幕| 亚洲av无码一区二区三区不卡| 亚洲五月激情综合图片区| 亚洲色偷偷av男人的天堂| 亚洲综合丁香婷婷六月香| 亚洲中文字幕一区精品自拍| 亚洲精品成a人在线观看夫| 小说专区亚洲春色校园| 亚洲国产综合精品一区在线播放| 久久亚洲国产精品123区| 久久亚洲综合色一区二区三区| 亚洲AV日韩精品久久久久 | 久久亚洲AV无码精品色午夜麻豆| 亚洲精品国产手机| 中文字幕亚洲综合久久综合| 国产精品久久久久久亚洲小说| 亚洲色婷婷综合开心网|