前提条件
使用工具python3.x
使用库numpy;opencv,
api简介
1.cv.add(s1,s2)
s1,s2为cv.imread函数返回的对象,表示将s1和s2的像素进行相加,函数会返回一个对象。可以通过cv.imshow显示出图片进行直观感受。
2.cv.subtract(s1,s2)
将s1和s2的像素进行相减,函数会返回一个对象
3.cv.multiply(s1,s2)
将s1和s2的像素进行相乘,函数会返回一个对象
4.cv.divide(s1,s2)
将s1和s2的像素进行相除,函数会返回一个对象
5.cv.meanStdDev(s1)
求图片的均值和方差(对比度),s1为cv.imread函数返回的对象,具体看代码
代码实例
import cv2 as cv
import numpy as np
def addDemo(s1, s2): #像素相加
dst = cv.add(s1, s2)
cv.imshow('addDemo',dst)
def subtractDemo(s1, s2): #像素相减
dst = cv.subtract(s1, s2)
cv.imshow('subtractDemo',dst)
def divideDemo(s1, s2): #像素相对除
dst = cv.divide(s1, s2)
cv.imshow('divideDemo',dst)
def multiplyDemo(s1, s2): #像素相乘
dst = cv.multiply(s1, s2)
cv.imshow('multiplyDemo',dst)
def others(m1, m2): #其他类型运算
# M1 = cv.mean(m1) #求均值
# M2 = cv.mean(m2)
# print(M1) #输出三个通道的平均像素值
# print(M2)
M1, dev1 = cv.meanStdDev(m1) #求均值和方差(对比度)
M2, dev2 = cv.meanStdDev(m2)
h, w = m1.shape[:2] #m1为图片数组,shape[:2]表示将图片数组切割为0,1,然后赋给h,w
print(M1,M2,dev1,dev2)
#直观感受 均值和方差效果,应用在比如:扫描仪有没有扫出信息
img = np.zeros([h, w], np.uint8)
m, dev = cv.meanStdDev(img)
print(m)
print(dev)
src1=cv.imread("D:/openCV_image/image/19_1.png")
src2=cv.imread("D:/openCV_image/image/19_2.png")
# cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
print(src1.shape,src2.shape)
cv.imshow("image1",src1)
cv.imshow("image2",src2)
# addDemo(src1, src2) #两张图片像素值相加
# subtractDemo(src1, src2) #两张图片像素值相减
# divideDemo(src1, src2) #两张图片像素值相除
# multiplyDemo(src1, src2) #两张图片像素值相乘
others(src1, src2)
cv.waitKey(0)
cv.destroyAllWindows()