算术运算与逻辑运算
加:cv.add(src1, src2, dst=None, mask=None, dtype=None) 减:cv.subtract(src1, src2, dst=None, mask=None, dtype=None) 乘:cv.divide(src1, src2, dst=None, scale=None, dtype=None) 除:cv.multiply(src1, src2, dst=None, scale=None, dtype=None): 与:cv.bitwise_and(src1, src2, dst=None, mask=None) 或:cv.bitwise_or(src1, src2, dst=None, mask=None) 非:cv.bitwise_not(src, dst=None, mask=None)
调整图像对比度几及亮度
cv.addWeighted(src1, alpha, src2, beta, gamma, dst=None, dtype=None)
import cv2 as cv
import numpy as np
# 对两张图像进行加减乘除(大小相同)
def add_demo(m1, m2):
dst = cv.add(m1, m2) # 加
cv.imshow("add_demo", dst)
def subtract_demo(m1, m2):
dst = cv.subtract(m1, m2) # 减
cv.imshow("subtract_demo", dst)
def divide_demo(m1, m2):
dst = cv.divide(m1, m2)
cv.imshow("divide_demo", dst)
def multiply_demo(m1, m2):
dst = cv.multiply(m1, m2)
cv.imshow("multiply_demo", dst)
# 对图像进行逻辑运算
def and_demo(m1, m2):
b_and = cv.bitwise_and(m1, m2)
cv.imshow("and",b_and)
def or_demo(m1, m2):
b_or = cv.bitwise_or(m1, m2)
cv.imshow("or",b_or)
def not_demo(m1):
b_not = cv.bitwise_not(m1)
cv.imshow("not",b_not)
# 调整图像对比度几及亮度
def contrast_bright_demo(img, c, b):
h, w, ch = img.shape
blank = np.zeros([h, w, ch], img.dtype)
dest = cv.addWeighted(img, c, blank, 1-c, b) # 调整亮度和对比度
cv.imshow("con-br-demo",dest)
src1 = cv.imread("D:/JetBrains/PyCharm 2019.1.3/PycharmProjects/Study/opencv_study/Penguins.jpg")
src2 = cv.imread("D:/JetBrains/PyCharm 2019.1.3/PycharmProjects/Study/opencv_study/1.jpg")
cv.namedWindow("input img", cv.WINDOW_AUTOSIZE)
add_demo(src1, src2)
subtract_demo(src1, src2)
divide_demo(src1, src2)
multiply_demo(src1, src2)
and_demo(src1, src2)
or_demo(src1, src2)
not_demo(src1)
contrast_bright_demo(src1, 10, 0)
cv.waitKey(0)
cv.destroyAllWindows()
效果图: