在做像素运算的时候,对图像有一个要求,输入图像的大小,和类型要完全一致,这样才能完成像素运算。
一下就是加减乘除的运算,没啥好讲的 调api就完事了
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 logic_demo(m1, m2):
dst = cv.bitwise_and(m1,m2) 二进制的与运算,全1时才为1
dst = cv.bitwise_and(m1,m2) 二进制的或运算,全0时为0,有1为1
cv.imshow("logic_demo", dst)
image = cv.imread("C:/Users/w/Pictures/Saved Pictures/4.png")
dst = cv.bitwise_not(image) 二进制的非运算,0取反为1, 1取反为0
cv.imshow("logic_demo", dst)
def other(m1, m2): 算均值 和方差
M1,dev1 = cv.meanStdDev(m1) 返回均值和方差
M2,dev2 = cv.meanStdDev(m2) 同上
h, w = m1.shape[:2] 将m1 图像的 高和宽 分离出来
print("mean", M1) 打印均值
print("mean", M2)
print("dev ",dev1) 打印方差
print("dev ",dev2)
img = np.zeros([h, w], np.uint8) 创建一个高 宽为0 的一个矩阵
m, dev =cv.meanStdDev(img)
print(m) 均值和方差肯定全为零 当图像全为一个数值的时候,它的均值和方差肯定是全为0的,这个图像没有任何的意义,我们可以根据均值和方差来得到这个结论。
print(dev)
以上讲解了一些关于像素运算的加减乘除和与或非的操作,有编程基础的应该很容易能够理解
接下来调节一下图像的亮度和对比度
def contrast_brightness_demo(image,c,b): c 代表了对比度 b 代表了亮度
h, w, ch = image.shape 分开
blank = np.zeros([h, w, ch], image.dtype) 创建一个和原来一样的图片 里面的值全为0
dst = cv.addWeighted(image, c, blank, 1-c, b)这个api 能够调整亮度和对比度
api 的原理 dst = src1*alpha + src2*beta + gamma;
cv.imshow('con_bri-demo', dst)