一、数值运算加减乘除
opencv自带图片色素的处理函数
相加:add() 相减:subtract() 相乘:multiply() 相除:divide()
原理就是:通过获取两张(一次只能是两张)个图片的同一个位置的色素值来实现运算。运算的要求:两张图片的shape要一样。
代码如下:
# 引入包
import cv2 as cv
def shu_image(src11, src22):
src = cv.add(src11, src22) # 相加
cv.imshow("addImage",src)
src = cv.subtract(src11, src22) # 相减
cv.imshow("subImage", src)
src = cv.multiply(src11, src22) # 相乘
cv.imshow("mulImage", src)
src = cv.divide(src11, src22) # 相除
cv.imshow("divide", src)
src1 = cv.imread("./static/image/linux.jpg")
src2 = cv.imread("./static/image/windows.jpg")
cv.imshow("src1", src1)
cv.imshow("src2", src2)
shu_image(src1, src2)
cv.waitKey(0)
cv.destroyAllWindows()
运行结果:
————————————————————————————————————————————————————
二、逻辑运算(与或非异或)
opencv自带图片色素的处理函数
与:bitwise_add() 或:bitwise_or() 非:bitwise_not() 异或:bitwise_xor()
逻辑运算:与或非的操作
代码如下:
# 引入包
import cv2 as cv
def luo_image(src11, src22):
src = cv.bitwise_and(src11, src22) # 与 两张图片同一位置的色素两个值均不为零的才会有输出
cv.imshow("and", src)
src = cv.bitwise_or(src11, src22) # 或 两张图片同一位置的色素两个值不全为零的才会有输出
cv.imshow("or", src)
src = cv.bitwise_xor(src11, src22) # 异或 两张图片同一位置的色素两个值有一个为零,另一个不为零才会输出
cv.imshow("xor", src)
src = cv.bitwise_not(src11, src22) # 非 对一张图片操作 取反
cv.imshow("nor", src)
src1 = cv.imread("./static/image/linux.jpg")
src2 = cv.imread("./static/image/windows.jpg")
cv.imshow("src1", src1)
cv.imshow("src2", src2)
luo_image(src1, src2)
cv.waitKey(0)
cv.destroyAllWindows()
运行结果: