Python-OpenCV图像处理-04-像素运算

学图像这几天,其实发现图像没有我们想象的那么高大上,其实通俗理解bgr图像就是三张单色的图像进行加合。而单色的图像其实就是一个二维的数组,在数组中的数组元素代表的就是每个元素点的bgr的值的多少。 

import cv2 as cv
import numpy as np

图像的加减乘除:

图像的加减乘除其实就是每个数组的元素进行加减乘除

加减乘除后返回到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)

逻辑运算: 

#逻辑运算
#利用逻辑函数and可以提取出前面inRange()函数捕捉到的颜色
def logic_demo(m1,m2):
    dst =cv.bitwise_and(m1,m2)
    cv.imshow("logic_demo0",dst)
    dst1= cv.bitwise_or(m1, m2)
    cv.imshow("logic_demo1", dst1)
    dst2 = cv.bitwise_xor(m1, m2)
    cv.imshow("logic_demo2", dst2)
    dst3 = cv.bitwise_not(m1)
    cv.imshow("logic_demo3", dst3)

算颜色的均值和方差: 

def others(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,c,b):
    h,w,ch =image.shape
    blank =np.zeros([h,w,ch],image.dtype)
    dst =cv.addWeighted(image,c,blank,1-c,b)
    cv.imshow("con-bri-demo",dst)

函数demo测试:

src1 =cv.imread("C:\\Users\\william\\Pictures\\go.jpg")
src2 =cv.imread("C:\\Users\\william\\Pictures\\gui.jpg")
print(src1.shape)
print(src2.shape)
cv.namedWindow("image1",cv.WINDOW_AUTOSIZE)
cv.imshow("image1",src1)
cv.imshow("image2",src2)
add_demo(src1,src2)
subtract_demo(src1,src2)
multiply_demo(src1,src2)
divide_demo(src1,src2)
logic_demo(src1,src2)
others(src1,src2)
contrast_brightness_demo(src1,1.2,10)
cv.waitKey(0)
cv.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/weixin_41445387/article/details/86578353