一、相關概念
1、算術運算
Ⅰ加減乘除
Ⅱ調節亮度
Ⅲ調整對比度
2、邏輯運算
Ⅰ與或非
Ⅱ遮罩層控制
二、圖像算術運算(加減乘除均值方差)
其中圖像的加減乘除需要保證兩張圖像的大小相同
import cv2
import numpy as npdef add(src1,src2):dst = cv2.add(src1,src2)cv2.imshow("add",dst)def subtract(src1,src2):dst1 = cv2.subtract(src1,src2)dst2 = cv2.subtract(src2,src1)cv2.imshow("subtract1",dst1)cv2.imshow("subtract2",dst2)def divide(src1,src2):dst1 = cv2.divide(src1,src2)dst2 = cv2.divide(src2,src1)cv2.imshow("divide1",dst1)cv2.imshow("divide2",dst2)def multiply(src1,src2):dst = cv2.multiply(src1,src2)cv2.imshow("multiply",dst)def average_value(src1,src2):#圖像均值m1 = cv2.mean(src1)m2 = cv2.mean(src2)print("均值1:",m1)print("均值2:",m2)def mean_variance(src1,src2):m1,dev1 = cv2.meanStdDev(src1)#m為均值,dev為方差m2,dev2 = cv2.meanStdDev(src2)print("均值1:",m1)print("均值2:",m2)print("方差1:",dev1)print("方差2:",dev2)def compare(src1):#當全為1的圖像,其方差為0h,w = src1.shape[:2]print(h,w)img = np.ones([h,w],np.uint8)m,dev = cv2.meanStdDev(img)print("均值是:",m,"方差是:",dev)src1 = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
src2 = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a2.jpg")
print(src1.shape)
print(src2.shape)#cv2.namedWindow("image1",cv2.WINDOW_AUTOSIZE)
cv2.imshow("image1",src1)
cv2.imshow("image2",src2)add(src1,src2)
subtract(src1,src2)
divide(src1,src2)
multiply(src1,src2)average_value(src1,src2)
mean_variance(src1,src2)compare(src1)cv2.waitKey(0)
cv2.destroyAllWindows()
運行效果如下:
三、圖像的邏輯運算(與或非)
與或運算針對兩張圖片而言,非運算針對單一圖片而言
import cv2
import numpy as npdef logic(src1,src2):And = cv2.bitwise_and(src1,src2)cv2.imshow("logic_and",And)Or = cv2.bitwise_or(src1,src2)cv2.imshow("logic_or",Or)Not1 = cv2.bitwise_not(src1)cv2.imshow("logic_not1",Not1)Not2 = cv2.bitwise_not(src2)cv2.imshow("logic_not2",Not2)src1 = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
src2 = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a2.jpg")
cv2.imshow("image1",src1)
cv2.imshow("image2",src2)logic(src1,src2)cv2.waitKey(0)
cv2.destroyAllWindows()
運行效果圖如下:
四、對圖像的對比度、亮度進行調節
import cv2
import numpy as npdef contrast_brightness(src,c,b):#目標圖像、對比度、亮度h,w,ch = src.shapeblack = np.zeros([h,w,ch],src.dtype)dst = cv2.addWeighted(src,c,black,1-c,b)cv2.imshow("contrast_brightness",dst)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
cv2.imshow("image",src)contrast_brightness(src,1,2)cv2.waitKey(0)
cv2.destroyAllWindows()
效果圖如下: