python-opencv 图像的算术运算与逻辑运算

文章目录

  • 图像的运算
    • 算术运算:加减乘除
    • 逻辑运算:与或非 异或
  • 总结
  • 代码
  • 参考文献

图像的运算

首先进行算术运算前我们要保证两张图片的像素一致,电脑自带的画图就能完成。
python-opencv 图像的算术运算与逻辑运算_第1张图片
python-opencv 图像的算术运算与逻辑运算_第2张图片
由于第二张图片太白了效果不是很好,所以就把这张图片的像素值都减去128.得到下面的图片
python-opencv 图像的算术运算与逻辑运算_第3张图片

算术运算:加减乘除

add_demo = cv.add(ig,color)     
subtract_demo = cv.subtract(ig,color) 
multiply_demo = cv.multiply(ig,color)
divide_demo = cv.divide(ig,color)

opencv自带的函数非常好理解,函数名就能描述出我们要做的操作。我们把每一种操作都封装成一个函数。如下:

def divide_demo(ig,color):
	divide_demo = cv.divide(ig,color)
	cv.imwrite('divide_demo.jpg',divide_demo)
	cv.namedWindow("divide_demo",cv.WINDOW_NORMAL)
	cv.imshow("divide_demo",divide_demo)
	return divide_demo

逻辑运算:与或非 异或

and_demo = cv.bitwise_and(ig,color)
or_demo = cv.bitwise_or(ig,color)
not_demo = cv.bitwise_not(ig)
xor_demo = cv.bitwise_xor(ig,color)

同上,也同样封装好。得到最终结果:
python-opencv 图像的算术运算与逻辑运算_第4张图片

总结

是不是很炫酷,需要注意的是cv.*() 存在饱和机制,也就是说所有值超过255就保存为255,所有的值小于0就保存为0.如图add_demo,图片IG白色部分在执行加操作之后都是白色,图像subtract_demo黑色部分在执行减操作之后也都是黑色的,有兴趣同学可以试试numpy.add,是舍弃溢出值的机制,效果和cv.add不同。

代码

https://github.com/Clayygou/python-opencv/tree/master/Pixel_operations

参考文献

同上

你可能感兴趣的:(计算机视觉)