#代碼參考b站python+opencv3.3視訊教學 基礎入門 賈志剛
import cv2 as cv
import numpy as np
#邏輯運算:與:都為1才為真,或:都位0才為假 異或:相同為假,不同為真
def add_demo(m1,m2):
dst=cv.add(m1,m2)
cv.imshow("add",dst)
def subtract_demo(m1,m2):
dst=cv.subtract(m1,m2)
cv.imshow("subtract",dst)
def multiply_demo(m1,m2):
dst=cv.multiply(m1,m2)
cv.imshow("multiply",dst)
def divide_demo(m1,m2):
dst=cv.divide(m1,m2)
cv.imshow("divide",dst)
def mean_function(m1,m2):
# 計算3個通道各自的均值
M1=cv.mean(m1)
M2=cv.mean(m2)
print(M1)
print(M2)
def meanstddev_function(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,a,g):
h,w,ch=image.shape
blank=np.zeros([h,w,ch],image.dtype)
dst=cv.addWeighted(image,a,blank,1-a,g)
cv.imshow("addweight",dst)
src1 = cv.imread("C:/Users/hyn/Desktop/Linux2.jpg")
src2 = cv.imread("C:/Users/hyn/Desktop/windows.jpg")
print(src1.shape)
print(src2.shape)
# cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
# cv.imshow("src1",src1)
# cv.imshow("src2",src2)
add_demo(src1,src2)
subtract_demo(src1,src2)
multiply_demo(src1,src2)
divide_demo(src1,src2)
mean_function(src1,src2)
meanstddev_function(src1,src2)
contrast_brightness_demo(src2,1.2,10) # 第一個1.2為對比度 第二個為亮度數值越大越亮
cv.waitKey(0)
cv.destroyAllWindows()
# addWeighted函數:官方:計算兩個圖像陣列的權重和 我的了解是按照所占比例合成兩張圖檔。
#
# addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1);
#
# 一共有七個參數:前4個是兩張要合成的圖檔及它們所占比例,第5個double gamma起微調作用,第6個OutputArray dst是合成後的圖檔,第七個輸出的圖檔的類型(可選參數,預設-1)
#
# 有公式得出兩個圖檔加成輸出的圖檔為:dst=src1*alpha+src2*beta+gamma