栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【OpenCV-Python-课程(贾)】OpenCV3.3课程笔记:像素处理,像素值的逻辑运算(与、或、非、异或,bitwise)、算术运算(加减乘除),饱和运算(add),遮罩层控制(mask)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【OpenCV-Python-课程(贾)】OpenCV3.3课程笔记:像素处理,像素值的逻辑运算(与、或、非、异或,bitwise)、算术运算(加减乘除),饱和运算(add),遮罩层控制(mask)

一、像素逻辑运算(and、or、not、xor)

像素逻辑运算,一般用来进行遮罩层控制。

假如我们有一个遮罩层图像,只想要遮罩图的白色区域显示原图,就可以用到与运算(AND);因为这时候白色区域的像素运算结果取决于原图,而黑色区域的运算结果一定是黑色。

或运算(OR)能够得到一个区域上互补性地更加接近上边界值的图像,也即局部亮度提升。

非运算(NOT)和被减数是最大像素值时的减法算术运算结果相同,比如NOT 100(十进制,对应的二进制是01100100) = 155(十进制,对应的二进制是 10011011),也就是说100的非值就等于255-100。

非运算(NOT)就是反相操作,白的变成黑的,黑的变成白的。

异或运算(XOR)一般用来判断两个图像是否相同,如果相同最后生成纯黑色图像,如果不同就会有白色块,并且使用sum()函数把所有元素加起来会发现不为0。

各个运算的API

  • cv2.bitwise_and(src1, src2)
  • cv2.bitwise_or(src1, src2)
  • cv2.bitwise_not(src1, src2)
  • cv2.bitwise_nor(src1, src2)

二、遮罩层控制(bitwise_and和参数mask)

遮罩层控制指用上面提到的与运算API(bitwise_and),设置参数mask,实现只显示遮罩图像的透光(白色)区域。

cv.bitwise_and(src, src, mask)

三、像素算术运算(add、subtract、divide、multiply)

像素算术运算,可以改变图像的亮度(暗度)。

各个运算的API

  • cv2.add(src1, src2, dst, mask, dtype)
  • cv2.subtract(src1, src2, dst, mask, dtype)
  • cv2.multiply(src1, src2, dst, mask, dtype)
  • cv2.divide(src1, src2, dst, mask, dtype)

src1和src2既可以都是单个数值,也可以都是图像数组,也可以是一个图像数组搭配一个单个数值,总之只要能满足Broadcast机制,就允许。

dst在Python语言中,可以省略不写,因为函数返回值就是dst

mask代表改变的范围。

注意上面四大API,都是饱和运算;也即如果实际结果数值小于下边界,就等于下边界,如果大于上边界,就等于上边界。典型的容器类型是CV_8U,下边界是0,上边界是255,如果计算结果小于0就返回0,如果计算结果大于255就返回255。

 

四、图像融合(addweighted)

图像融合属于图像加法运算的特例,图像加法运算是两个图像的权值都为1,而图像融合是两图权值和为1。

add()和addweighted()都是饱和运算。

语法格式如下

cv.addWeighted(src1, alpha, src2, beta, gamma[, dst[, dtype]]) ->dst

alpha是src1的权重

beta是src2的权重

gamma是结果偏移值

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030232.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号