今天的学习的内容是:通过 Python OpenCV 对图像实现乘除操作,涉及函数为 cv2.multiply 与 cv2.divide。后面又补充了一些像素的逻辑运算,以及一个综合案例
cv2.multiply
该函数的语法格式如下:
cv2.multiply(src1, src2, dst=None, scale=None, dtype=None)
参数说明:
src1:第一张图像
src2:第二张图像
dst:可选参数,目标图像,需要提前分配空间,可省略
mask:掩膜
scale:缩放比,常量,即在 src1*src2 的基础上再乘 scale
dtype:输出图像数组的深度,默认等于-1
测试下面的代码,尝试之后,发现乘法很容易就全黑或者全白,毕竟两个数字相乘知乎,很容易超过 255。
import cv2 as cv
def multiply_demo(src1, src2):
ret = cv.multiply(src1, src2)
cv.imshow("multiply_demo", ret)
cv.waitKey(0)
if __name__ == "__main__":
src1 = cv.imread("./18_3.jpeg")
src2 = cv.imread("./18_4.jpg")
multiply_demo(src1, src2)
如果 cv2.multiply 函数的第二个图像为一个标量,那运行结果是针对单一通道进行叠加。
import cv2 as cv
from matplotlib import pyplot as plt
def multiply_demo(src1, src2):
ret = cv.multiply(src1, 1.5)
plt.subplot(121), plt.imshow(src1), plt.title('src1')
plt.subplot(122), plt.imshow(ret), plt.title('ret')
plt.show()
if __name__ == "__main__":
src1 = cv.imread("./18_3.jpeg&