一、图像加法
两幅图像的大小,类型必须一致,或者第二个 图像可以是一个标量值。
第一种方法:
直接相加:
import cv2 as cv
import numpy as np
img_1 = cv.imread("D://opencv_test//test_a.jpg")
img_2 = cv.imread("D://opencv_test//test_c.jpg")
img_3 = img_1 + img_2
cv.imshow("win_1", img_1)
cv.imshow("win_2", img_2)
cv.imshow("win_3", img_3)
cv.waitKey(0)
cv.destroyAllWindows()
第二种方法:
用到的函数:
cv.add()
参数是要相加的两张图像的名字
import cv2 as cv
import numpy as np
img_1 = cv.imread("D://opencv_test//test_a.jpg")
img_2 = cv.imread("D://opencv_test//test_c.jpg")
cv.imshow("win_1", img_1)
cv.imshow("win_2", img_2)
cv.imshow("win_4", cv.add(img_1, img_2))#相加的图像相比第一种方法更加白,我也不知道为什么
cv.waitKey(0)
cv.destroyAllWindows()
二、图像混合
用到的函数:
cv.addWeighted()
五个参数:
- 第一张图像的名字
- 第一张图像占比
- 第二张图像的名字
- 第二章图像占比
- 默认0(我也不知道)
用法见下:
import cv2 as cv
import numpy as np
img_1 = cv.imread("D://opencv_test//test_a.jpg")
img_2 = cv.imread("D://opencv_test//test_c.jpg")
img_3 = cv.addWeighted(img_1, 0.7, img_2, 0.3, 0)
cv.imshow("win_1", img_1)
cv.imshow("win_2", img_2)
cv.imshow("win_3", img_3)
cv.waitKey(0)
cv.destroyAllWindows()
扩展:
结合滑动条:
import cv2 as cv
import numpy as np
def nothing(x):
pass
img_1 = cv.imread("D://opencv_test//test_a.jpg")
img_2 = cv.imread("D://opencv_test//test_c.jpg")
cv.namedWindow("win")
cv.createTrackbar("X", "win", 1, 10, nothing)
while(1):
a = cv.getTrackbarPos("X", "win")
img_3 = cv.addWeighted(img_1, a/10, img_2, 1-a/10, 0)
cv.imshow("win", img_3)
if(cv.waitKey(10)&0xFF == 27):
break
cv.destroyAllWindows()