学图像这几天,其实发现图像没有我们想象的那么高大上,其实通俗理解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()函数捕捉到的颜色deflogic_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)
算颜色的均值和方差:
defothers(m1,m2): M1 ,dev1=cv.meanStdDev(m1)#均值和方差M2 ,dev2=cv.meanStdDev(m2) print(M1) print(M2) print(dev1) print(dev2)
调整对比度和亮度:
#调整对比度 亮度defcontrast_brightness_demo(image,c,b): h,w,ch=image.shapeblank=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()