前言:
今天咱们对“python中的负数取余”大概比较关切,我们都想要学习一些“python中的负数取余”的相关文章。那么小编也在网上收集了一些关于“python中的负数取余””的相关文章,希望兄弟们能喜欢,咱们一起来了解一下吧!图像的运算,例如加法运算、位运算等基础图像运算。我们所使用的图像处理技术正是依靠这些简单的基础运算来完成的。
1.加法运算:
分两种方式,一种为传统“+”号,另一种是函数cv2.add(),因为计算机一般使用8个比特来表示灰度图像,所以像素值的范围是0~255。当像素值的和超过255时,这两种加法方式的处理方法是不一样的。
1.1运算符“+”
上式中,a和b表示两幅图像的像素值,mod(a+b,256) 表示“a+b的和除以256取余”。
实例:
执行结果:
通过上面的解释知道,(a+b)>255,写除以256取余,我们来验证img3的数据:
验证结果,符合上面表达式。
1.2 cv2.add()函数
当像素a和像素b的和超过255时,会将其截断,取范围内的最大值,也就是255,这是与运算符“+”的不同之处。
实例:
执行结果:
ps:由于使用cv2.add()函数,执行后当img1+img2中的数值大于255时,则取255,可以看一下在img3中标注的红框,都是img1+img2中大于255的数值。
2.减法运算
同样分两种,一种是传统的“-”,另一种是函数cv2.subtract()。
2.1 “-”号运算
a和b表示两幅图像的像素值,mod(a-b,255)+1表示“a-b的差除以255取余后加1”。
实例:
执行结果:
ps:这里重点需要注意的就是负数相除取余数。我们先来看红框中标注的数字是如何得来的:
先看上图标注的计算式如果把img1-img2,当数值小于0,就会按照mod(a-b,255)+1的方程式进行运算。此时取出的余数就是img3中用红框标注的数值。我们看一下它余数是如何来的。(98-178)%255+1=176,(98-178)%255=176-1=175,此时我们如果把(98-178)变为178-98=80,我们再用175+80=255。其他a-b<0的数值计算也是如此。因此,我们可以得出个结论在python中负数取余后的结果和相同正数取余后的结果相加等于余数。或者说在这里我们可以用余数=负数+除数,例如176-1=(98-178)+255。
2.2 函数cv2.subtract()
当像素a和像素b的差值小于0时,会将其截断,取最小值0,这是与运算符“-”的不同之处。
实例:
执行结果:
3.乘法运算
图像乘法运算有矩阵乘法和矩阵的点乘两种。面向Python的OpenCV提供了cv2.mutiply()函数进行矩阵的点乘运算,Python为矩阵的乘法运算提供了dot()函数。
1.1矩阵乘法:np.dot()函数
矩阵乘法的一般格式为:result=np.dot(a,b)其中:a和b表示需要进行矩阵乘法计算的两个像素值矩阵。在进行矩阵乘法运算时必须满足其行列维数的规则。
实例:
执行结果:
Ps:没看明白img3的数值是如何计算出来的,这个后续补充。
3.2 cv2.multiply()函数
实例:
执行结果:
矩阵点乘运算的最终结果基本都是255,这是由于,在结果大于255时,类似于加法运算,计算机会截断数据,取最大值。
4.除法运算
除法运算应用在图像中即为矩阵的点除运算,面向Python的OpenCV提供了cv2.divide()函数来进行像素矩阵的点除运算。
实例:
执行结果:
矩阵点除运算的最终结果全是整数,这是因为像素的范围一般在0~255之间而且是整数,所以,当定义的随机矩阵是8位整型数时,在做除法运算时对结果将自动取整。
5.逻辑运算
在进行图像处理时经常会遇到按位逻辑运算。主要有按位与、按位或、按位非、按位异或四种常用的逻辑运算
5.1 按位与
当参与运算的值都为真,结果为真,否则为假
OpenCV中的cv2.bitwise_and()函数用于进行按位与运算,其一般格式为:cv2.bitwise_and(src1,src2[,mask])其中:dst表示与输入值具有相同大小的输出值。src1表示第一个输入值。src2表示第二个输入值。mask表示可选操作掩码。
实例:
执行结果:
5.2 按位或
按位或的规则是参与运算的两个值只要有一个为真,结果就为真
OpenCV中的cv2.bitwise_or()函数用于进行按位与运算,其一般格式为:cv2.bitwise_or(src1,src2[,mask])其中:dst表示与输入值具有相同大小的输出值。src1表示第一个输入值。src2表示第二个输入值。mask表示可选操作掩码。
实例:
执行结果:
5.3 按位非
按位非是取反操作
语法:cv2.bitwise_not(src[,mask]);src表示输入值。 mask表示可选操作掩码。
实例:
执行结果:
ps:这个有点类似photoshop中的反选,但又不是,这里把整个原图片的颜色全转换成了反色,也叫补色。比如白变成了黑,红变成了蓝。就是与原图颜色相反。(像素值取反)
5.4 按异或
按位异或操作类似于半加运算
语法:cv2.bitwise_xor(src1,src2[,mask]);src表示输入值。 mask表示可选操作掩码。
实例:
执行结果:
Ps:选定区域取反色。
(以上内容为机器学习:基于OpenCV和Python的智能图像处理个人学习笔记,此书由高敬鹏、江志烨、赵娜编写,如有侵权,联系删除)
标签: #python中的负数取余