- 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。

 


				