准备工作:
导包
准备两张尺寸一样的图片
像素运算----算术运算
import cv2 as cv
src1=cv.imread("C:/Users/admin/Pictures/zyl/Tes1.jpg")
src2=cv.imread("C:/Users/admin/Pictures/zyl/zhuanhuan/tupianchuli/chuli1.jpg")
#必写的两个方法
cv.waitKey(0)#图片不断刷新(及存在)
cv.destroyAllWindows()#关闭所有图片窗体
加法运算
def add_demo(m1,m2):
dst=cv.add(m1,m2)#通过add方法使两种照片像素叠加在一起
cv.imshow("add_demo",dst)#显示图片
add_demo(src1,src2)#调用方法
减除乘运算
#减
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)
#乘
def multiply_demo(m1,m2):
dst=cv.multiply(m1,m2)
cv.imshow("multiply_demo",dst)
#显示
#subtract_demo(src1,src2)
#divide_demo(src1,src2)
multiply_demo(src1,src2)
均值
#均值
def others(m1,m2):
M1=cv.mean(m1)
M2=cv.mean(m2)
print(m1)
print(m2)
均值与分叉
分叉越大,图片之间的差异性越大,也就是对比度
def others(m1,m2):
M1,dev1=cv.meanStdDev(m1)
M2,dev2=cv.meanStdDev(m2)
print(m1)#均值
print(m2)
print(dev1)#分叉
print(dev2)
像素运算----逻辑运算
#与
def bitwise_and_demo(m1,m2):
dst =cv.bitwise_and(m1,m2)
cv.imshow("bitwise_and_demo",dst)
bitwise_and_demo(src1,src2)
#或
def bitwise_or_demo(m1,m2):
dst =cv.bitwise_or(m1,m2)
cv.imshow("bitwise_or_demo",dst)
bitwise_or_demo(src1,src2)
#非
def bitwise_not_demo(m1,m2):
dst =cv.bitwise_not(m1,m2)
cv.imshow("bitwise_not_demo",dst)
bitwise_not_demo(src1,src2)
掩膜(mask)
def extrace_object_demo():
capture=cv.VideoCapture('C:/Users/admin/Pictures/sp/ge1.mp4')
while (True):
ret,frame=capture.read()
if ret==False:
break;
hsv=cv.cvtColor(frame,cv.COLOR_BGR2HSV)
lower_hsv=np.array([0,0,0])#
upper_hsv=np.array([180,255,46])
mask=cv.inRange(hsv,lowerb=lower_hsv,upperb=upper_hsv)
dst= cv.bitwise_and(frame,frame,mask=mask)#利用mask显示轮廓
cv.imshow("video",frame)
cv.imshow("mask",dst)
c=cv.waitKey(40)
if c==27:
break
亮度与对比度
#图像的亮度与对比度
def contrast_brightness_demo(image,c,b):
h,w,ch=image.shape
#构建一个空白图像层
blank=np.zeros([h,w,ch],image.dtype)
#addWeighted用来将两个图片进行融合。
#参数:传进来的图片,对比度,空白图像,1-对比度 ,亮度
dst=cv.addWeighted(image,c,blank,1-c,b)
cv.imshow("con-bri-demo",dst)
contrast_brightness_demo(src1,1.2,10)