opencv-python学习笔记三:像素变换

#代码参考b站python+opencv3.3视频教学 基础入门 贾志刚
import cv2 as cv
import numpy as np
#逻辑运算:与:都为1才为真,或:都位0才为假 异或:相同为假,不同为真


def add_demo(m1,m2):
    dst=cv.add(m1,m2)
    cv.imshow("add",dst)


def subtract_demo(m1,m2):
    dst=cv.subtract(m1,m2)
    cv.imshow("subtract",dst)


def multiply_demo(m1,m2):
    dst=cv.multiply(m1,m2)
    cv.imshow("multiply",dst)


def divide_demo(m1,m2):
    dst=cv.divide(m1,m2)
    cv.imshow("divide",dst)


def mean_function(m1,m2):
    # 计算3个通道各自的均值
    M1=cv.mean(m1)
    M2=cv.mean(m2)
    print(M1)
    print(M2)


def meanstddev_function(m1,m2):
    # 计算三个通道各自的均值和标准差
    M1,dev1=cv.meanStdDev(m1)
    M2,dev2=cv.meanStdDev(m2)

    print(M1)
    print(M2)

    print(dev1)
    print(dev2)


def contrast_brightness_demo(image,a,g):
    h,w,ch=image.shape
    blank=np.zeros([h,w,ch],image.dtype)
    dst=cv.addWeighted(image,a,blank,1-a,g)
    cv.imshow("addweight",dst)


src1 = cv.imread("C:/Users/hyn/Desktop/Linux2.jpg")
src2 = cv.imread("C:/Users/hyn/Desktop/windows.jpg")
print(src1.shape)
print(src2.shape)
# cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
# cv.imshow("src1",src1)
# cv.imshow("src2",src2)

add_demo(src1,src2)
subtract_demo(src1,src2)
multiply_demo(src1,src2)
divide_demo(src1,src2)

mean_function(src1,src2)
meanstddev_function(src1,src2)

contrast_brightness_demo(src2,1.2,10)  # 第一个1.2为对比度  第二个为亮度数值越大越亮
cv.waitKey(0)

cv.destroyAllWindows()

# addWeighted函数:官方:计算两个图像阵列的加权和 我的理解是按照所占比例合成两张图片。
#
# addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1);
#
# 一共有七个参数:前4个是两张要合成的图片及它们所占比例,第5个double gamma起微调作用,第6个OutputArray dst是合成后的图片,第七个输出的图片的类型(可选参数,默认-1)
#
# 有公式得出两个图片加成输出的图片为:dst=src1*alpha+src2*beta+gamma

你可能感兴趣的:(opencv-python学习笔记三:像素变换)