python实现图片色素的数值运算(加减乘除)和逻辑运算(与或非异或)
目录:
(一)数值运算(加减乘除)
(二)逻辑运算(与或非异或)
正文:
(一)数值运算(加减乘除)
opencv自带图片色素的处理函数------相加:add() 相减:subtract() 相乘:multiply() 相除:divide()
原理就是:通过获取两张(一次只能是两张)个图片的同一个位置的色素值来实现运算。运算的要求:两张图片的shape要一样。
1 # -*- coding=GBK -*- 2 import cv2 as cv 3 4 5 #数值运算:加减乘除 6 def shu_image(src11, src22): 7 src = cv.add(src11, src22)#加 8 cv.imshow("相加", src) 9 src = cv.subtract(src11, src22)#减 10 cv.imshow("相减", src) 11 src = cv.multiply(src11, src22)#乘 12 cv.imshow("相乘", src) 13 src = cv.divide(src11, src22)#除 14 cv.imshow("相除", src) 15 16 17 18 19 src1 = cv.imread("01.jpg") 20 src2 = cv.imread("02.jpg") 21 cv.imshow("原来1", src1) 22 cv.imshow("原来2", src2) 23 shu_image(src1, src2) 24 cv.waitKey(0) 25 cv.destroyAllWindows()
(二)逻辑运算(与或非异或)
opencv自带图片色素的处理函数------与:bitwise_add() 或:bitwise_or() 非:bitwise_not() 异或:bitwise_xor()
1 # -*- coding=GBK -*- 2 import cv2 as cv 3 4 5 #逻辑运算:与或非的操作 6 def luo_image(src11, src22): 7 src = cv.bitwise_and(src11, src22)#与 两张图片同一位置的色素两个值均不为零的才会有输出 8 cv.imshow("与", src) 9 src = cv.bitwise_or(src11, src22)#或 两张图片同一位置的色素两个值不全为零的才会有输出 10 cv.imshow("或", src) 11 src = cv.bitwise_not(src11)#非 对一张图片操作 取反 12 cv.imshow("非", src) 13 src = cv.bitwise_xor(src11, src22)#异或 两张图片同一位置的色素两个值有一个为零,另一个不为零才会输出 14 cv.imshow("异或", src) 15 16 src1 = cv.imread("01.jpg") 17 src2 = cv.imread("02.jpg") 18 cv.imshow("原来1", src1) 19 cv.imshow("原来2", src2) 20 luo_image(src1, src2) 21 cv.waitKey(0) 22 cv.destroyAllWindows()