零基础学习opencv 像素运算

在做像素运算的时候,对图像有一个要求,输入图像的大小,和类型要完全一致,这样才能完成像素运算。

一下就是加减乘除的运算,没啥好讲的 调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)

你可能感兴趣的:(零基础学习opencv 像素运算)