一:數值運算
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