学习视频可参见python+opencv3.3视频教学 基础入门
像素运算
outline
- 算术运算
- 加,减,乘,除
- 应用:调节亮度,调正对比度
- 逻辑运算
- 与,或,非
- 应用:遮罩层控制
- 改变对比度,亮度
1.算术运算
两张形状大小完全相同的图进行加减乘除
原图如下
-
加
-
两张图片的各个像素点的通道值相加
-
黑为0,0图二中任意的一个像素值还是图二的值,白为255,255加图二中任意的一个像素值骑结果超过255,进行截断,最终结果还是255,即为白色
-
def add_demo(m1,m2): dst=cv.add(m1,m2) cv.imshow("add_demo",dst)
-
-
应用:去除叠加性噪声 ,生成图像叠加效果
-
-
减
-
两张图片各个像素点的通道值相减
-
黑为0,0-图二中任意的一个像素值为负值,而范围是0-255,因此取0,即为黑,白为255,255-图二中任意的一个像素值得到相反的颜色
-
def subtract_demo(m1,m2): dst=cv.subtract(m1,m2) cv.imshow("subtract_demo",dst)
-
-
应用:显示两幅图像的差异,检测同一场景 两幅图像之间的变化;图像分割,如分割运动的车辆,减法去掉静止的部分,剩余的是运动元素和噪声。
-
-
乘
-
两张图片各个像素点的通道值相乘
-
黑为0,0*图二中任意的一个像素值为0,为黑,linux原图外边框是反锯齿的(边缘柔化),有模糊的,并不一定都为0,因此相乘之后会出现那种像烟花的边边
-
def multiply_demo(m1, m2): dst = cv.multiply(m1, m2) cv.imshow("multiply_demo", dst)
-
-
应用:图像的局部显示,用二值模板图像与原图像做乘法
-
-
除
-
与
-
全1得1
-
def logic_demo(m1, m2): dst=cv.bitwise_and(m1,m2) cv.imshow("logic_demo", dst)
-
-
相当于进行了一个遮罩
-
应用:求两个子图的相交子图
-
-
或
-
有1得1
-
def logic_demo(m1, m2): dst=cv.bitwise_or(m1,m2) cv.imshow("logic_demo", dst)
-
-
应用:合并子图
-
-
非
-
0得1,1得0 ,针对的是一张图
-
def logic_demo(m1): dst=cv.bitwise_not(m1) cv.imshow("logic_demo", dst)
-
-
应用:获得子图的补图
-
3.改变对比度,亮度
def contrast_brightness_demo(image, c, b):
h, w, ch = image.shape
#初始化一张黑图
blank = np.zeros([h, w, ch], image.dtype)
# 图像混合,c, 1-c为这两张图片的权重
dst = cv.addWeighted(image, c, blank, 1-c, b)
cv.imshow("contrast_brightness_demo", dst)
src=cv.imread("./images/lena.jpg")
#对比度1.2,亮度100
contrast_brightness_demo(src,1.2,100)
结果如下:
.imshow(“contrast_brightness_demo”, dst)
src=cv.imread("./images/lena.jpg")
#对比度1.2,亮度100
contrast_brightness_demo(src,1.2,100)
结果如下:

欢迎大家关注我的公众号小郭学数据
