1. 影像的加法
把兩幅影像相加,可以使用OpenCV的add函式,也可以使用NumPy的+操作,比如res = img1 + img2,兩個影像應該具有相同的大小和型別,或者第二個影像可以是標量值,
注意:OpenCV加法和NumPy加法是有區別的,OpenCV加法是飽和運算,而NumPy加法是模運算,例如:OpenCV中,某個顏色的值250+10=260會變成飽和的255,而NumPy加法250+10=260,260%256=4,得到4,
cv.add(x,y) 將x和y相加
對兩幅影像進行加法時,OpenCV的結果會更好,實際開發程序中,盡量使用OpenCV中的add函式,
2. 影像的混合
混合其實也是一種加法,但不同的是兩張圖片的權重不同,給人一種混合的感覺,影像混合的計算公式如下:
g(x) = (1?α)f0(x) + αf1(x)
通過修改 α 的值(0 → 1),可以實作非常復雜的混合,
cv.addWeighted(img1, a, img2, b, c)
回傳值:
影像 dst = a?img1 + b?img2 + c
例:將下面兩幅影像相加,再把兩幅圖混合在一起,第一幅圖的權重是0.7,第二幅圖的權重是0.3,


import cv2 as cv
import matplotlib
from matplotlib import pyplot as plt
font = {
"family": "Microsoft YaHei"
}
matplotlib.rc("font", **font)
rain = cv.imread("./image/rain.jpg")
view = cv.imread("./image/view.jpg")
img1 = cv.add(rain, view)
plt.imshow(img1[:, :, ::-1])
plt.title("OpenCV add")
plt.show()
img2 = rain + view
plt.imshow(img2[:, :, ::-1])
plt.title("NumPy add")
plt.show()
img3 = cv.addWeighted(view, 0.3, rain, 0.7, 0)
plt.imshow(img3[:, :, ::-1])
plt.title("Weight added")
plt.show()
輸出:



轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295037.html
標籤:其他
