作者:小郭学数据
源自:快学python
学习视频可参见python opencv3.3视频教学 基础入门[1]
今天写的是图像像素运算
outline
- 算术运算
- 加,减,乘,除
- 应用:调节亮度,调正对比度
- 逻辑运算
- 与,或,非
- 应用:遮罩层控制
- 改变对比度,亮度
1.算术运算
两张形状大小完全相同的图进行加减乘除
原图如下
加
- 两张图片的各个像素点的通道值相加
def add_demo(m1,m2):
dst=cv.add(m1,m2)
cv.imshow("add_demo",dst)
- 应用:去除叠加性噪声 ,生成图像叠加效果
减
- 两张图片各个像素点的通道值相减
def subtract_demo(m1,m2):
dst=cv.subtract(m1,m2)
cv.imshow("subtract_demo",dst)
- 应用:显示两幅图像的差异,检测同一场景 两幅图像之间的变化;图像分割,如分割运动的车辆,减法去掉静止的部分,剩余的是运动元素和噪声。
乘
- 两张图片各个像素点的通道值相乘
def multiply_demo(m1, m2):
dst = cv.multiply(m1, m2)
cv.imshow("multiply_demo", dst)
- 应用:图像的局部显示,用二值模板图像与原图像做乘法
除
- 两张图片各个像素点的通道值相除
def divide_demo(m1, m2):
dst = cv.divide(m1, m2)
cv.imshow("divide_demo", dst)
2.逻辑运算
与
- 全1得1
- 应用:求两个子图的相交子图
或
- 有1得1
非
- 0得1,1得0 ,针对的是一张图
3.改变对比度,亮度
代码语言:javascript复制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)
结果如下:
结语
以上内容仅是自我学习时记录的笔记,欢迎大家批评指正,一起学习进步。
参考资料
[1]
python opencv3.3视频教学 基础入门: https://www.bilibili.com/video/BV1QW411F7e7?p=1