- A+
所属分类:大数据
1 原理
- 与运算:两个二进制数,只要有一方为0,结果为0;否则为1;
- 或运算:两个二进制数,只要有一方为1,结果为1;否则为0;
- 取反运算:1取反结果是0;0取反结果是1.
- addWeighted(src1, alpha, src2, beta, gamma, dst=None, dtype=None):
第一个参数是第一幅图像
第二个参数是第一幅图像的权重
第三个参数是第二幅图像
第四个参数是第二幅图像的权重
第五个参数是前两幅图像权重和的结果上再统一加上的数值。
2 代码
- import cv2 as cv
- import numpy as np
- def logic_and(m1, m2): # 与运算
- dst = cv.bitwise_and(m1, m2)
- cv.imshow("logic_and", dst)
- def logic_or(m1, m2): # 或运算
- dst = cv.bitwise_or(m1, m2)
- cv.imshow("logic_or", dst)
- def logic_not(m1): # 取反运算
- dst = cv.bitwise_not(m1)
- cv.imshow("logic_not", dst)
- def cotracst_brightness_demo(image, c, b):
- black = np.zeros(image.shape, image.dtype)
- dst = cv.addWeighted(image, c, black, 1-c, b)
- cv.imshow("cotracst_brightness_demo", dst)
- print("start")
- src = cv.imread("C:/Users/Admin/Desktop/1.jpg") # 读取图像
- src2 = cv.imread("C:/Users/Admin/Desktop/2.jpg") # 读取图像
- cv.imshow("input image1", src) # 显示图片到特定的窗口中
- cv.imshow("input image2", src2) # 显示图片到特定的窗口中
- logic_and(src, src2)
- logic_or(src, src2)
- logic_not(src2)
- cotracst_brightness_demo(src, 1.2, 10)
- cv.waitKey(0) # 等待用户操作,0为一直等待,5000为等待用户操作5s
- cv.destroyAllWindows() # 释放所有内存
3 讲解
- 从print("start")语句开始,读取两幅图像并显示
- logic_and(src, src2)负责进行逻辑与运算,图像数组中,每个元素为1个字节,每位都为0,则该数值显示为0;每位都为1,则数值为255。Src2图像为黑白图像,黑色部分每位都是0,取与后,该像素还是黑色;白色部分每位都是1,取与后,该像素为src的像素值。
- logic_or(src, src2)负责逻辑或运算,黑色区域取或后为src的像素值;白色区域取或后还是白色;
- logic_not(src2)取反运算,黑变白,白变黑,彩色取其补色;
- cotracst_brightness_demo(src, 1.2, 10)增强图片对比度或亮度。1.2是第一幅图的权重,权重越高,第一幅图的对比度越强,10为统一增强的亮度。计算方式是第一幅图的像素*1.2+第二幅图的像素*-0.2+10就是每个对应像素的数值,由于第二幅图像是黑色的,像素值全是0,所以第二幅图像的权重结果依然是0。