天天看點

opencv學習(五):圖檔色素的數值運算(加減乘除)和邏輯運算(與或非異或)

一:數值運算

opencv自帶圖檔色素的處理函數:

相加:add()    

相減:subtract()    

相乘:divide()    

相除:multiply()

原理就是:通過擷取兩張(一次隻能是兩張)個圖檔的同一個位置的色素值來實作運算。

運算的要求:兩張圖檔的shape要一樣。

二:邏輯運算

opencv自帶圖檔色素的處理函數:

與:bitwise_add()   

或:bitwise_or()   

非:bitwise_not()  

異或:bitwise_xor()

代碼如下:

#導入cv子產品
import cv2 as cv

import numpy as 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 multiply_demo(m1,m2):     #相乘
    dst=cv.multiply(m1,m2)
    cv.imshow("multiply_demo",dst)

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

def logic_demo(m1,m2):         #邏輯運算
    # dst=cv.bitwise_and(m1,m2)#與運算
    # dst = cv.bitwise_or(m1, m2)# 或運算
    # dst = cv.bitwise_xor(m1, m2)# 異或運算
    dst=cv.bitwise_not(m1,m2)#非運算

    # cv.imshow("logic_demo_add",dst)
    # cv.imshow("logic_demo_or", dst)
    # cv.imshow("logic_demo_xor", dst)
    cv.imshow("logic_demo_not", dst)

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)


def others(m1,m2):

    M1,dev1=cv.meanStdDev(m1)
    M2,dev2=cv.meanStdDev(m2)
    h,w=m1.shape[:2]

    print(M1)
    print(M2)

    print(dev1)
    print(dev2)

    img=np.zeros([h,w],np.uint8)
    m,dev=cv.meanStdDev(img)
    print(m)
    print(dev)



print("------------Hi,Python!-------------")
# 讀取圖像,支援 bmp、jpg、png、tiff 等常用格式
src1 = cv.imread("F:/Projects/images/linux.png")
src2 = cv.imread("F:/Projects/images/windows.png")
print(src1.shape)
print(src2.shape)

#建立視窗并顯示圖像
#cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
#cv.imshow("input image1",src1)   #顯示原圖1
#cv.imshow("input image2",src2)   #顯示原圖2

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

src = cv.imread("F:/Projects/images/2.jpg")
cv.imshow("image2",src)
contrast_brightness_demo(src,1.5,10)

#logic_demo(src1,src2)
cv.waitKey(0)
#釋放視窗
cv.destroyAllWindows()



           

參考學習連結:https://blog.csdn.net/u011321546/article/details/79557092