opencv位运算,cv2.bitwise_and,cv2.bitwise_or,cv2.bitwise_not,cv2.bitwise_xor

这篇具有很好参考价值的文章主要介绍了opencv位运算,cv2.bitwise_and,cv2.bitwise_or,cv2.bitwise_not,cv2.bitwise_xor。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

与运算

或运算

非运算

异或运算

位运算完整代码 


与运算

        在opencv进行与运算使用cv2.bitwise_and方法

def bitwise_and(src1, src2, dst=None, mask=None)
  • src1:参与与运算的图像
  • src2:用src2与src1进行与运算
  • dst:与输入具有相同大小和类型的输出数组
  • mask:可选操作掩码,8 位单通道数组,即指定要更改的输出数组的元素。

        与运输操作就是1 & 1 = 1,其他为0。下面用猫的图片和狗图片进行与运算。

cat = cv2.resize(cv2.imread('../images/cat.jpg'), (400, 360))
dog = cv2.resize(cv2.imread('../images/dog.jpg'), (400, 360))
# 与运算 1 & 1 = 1, 其他为0
img_and = cv2.bitwise_and(cat, dog)
show('and', np.hstack((cat, dog, img_and)))

opencv位运算,cv2.bitwise_and,cv2.bitwise_or,cv2.bitwise_not,cv2.bitwise_xor

         与运算结果最终会变小,最后的图像也会偏暗


或运算

        在opencv进行或运算使用cv2.bitwise_or方法

def bitwise_or(src1, src2, dst=None, mask=None)

        或运算 0 | 0 = 0, 其他为1,下面将猫和狗图片进行或运算

cat = cv2.resize(cv2.imread('../images/cat.jpg'), (400, 360))
dog = cv2.resize(cv2.imread('../images/dog.jpg'), (400, 360))
# 或运算 0 | 0 = 0, 其他为1
img_or = cv2.bitwise_or(cat, dog)
show('or', np.hstack((cat, dog, img_or)))

opencv位运算,cv2.bitwise_and,cv2.bitwise_or,cv2.bitwise_not,cv2.bitwise_xor

        或运算最终结果会变大,最后的图像也就偏亮了 


非运算

        在opencv进行非运算使用cv2.bitwise_not方法

def bitwise_not(src, dst=None, mask=None)

        这个方法只需输入一个src,src将进行非运算。

        注意:opencv非运算不是1变0,0变1,而是 !x = 255 - x,下面对猫图片进行非运算

cat = cv2.resize(cv2.imread('../images/cat.jpg'), (400, 360))
# 非运算 !x = 255 - x
img_not = cv2.bitwise_not(cat)
show('not', np.hstack((cat, img_not)))

opencv位运算,cv2.bitwise_and,cv2.bitwise_or,cv2.bitwise_not,cv2.bitwise_xor

        可以发现黑的地方变白了,白的地方变黑了。 


异或运算

        在opencv进行异或运算使用cv2.bitwise_xor方法

def bitwise_xor(src1, src2, dst=None, mask=None)

        异或运算就是相同为0,不同为1,也就是 0 ^ 0 = 0 , 1 ^ 1 = 0 , 另外2个为1,下面将猫和狗进行异或运算

cat = cv2.resize(cv2.imread('../images/cat.jpg'), (400, 360))
dog = cv2.resize(cv2.imread('../images/dog.jpg'), (400, 360))
# 异或运算 1 ^ 1, 0 ^ 0 为0,其他为1
img_xor = cv2.bitwise_xor(cat, dog)
show('xor', np.hstack((cat, dog, img_xor)))

opencv位运算,cv2.bitwise_and,cv2.bitwise_or,cv2.bitwise_not,cv2.bitwise_xor

        异或运算最终结果也是特别的乱,看不出什么特征。


位运算完整代码 

        下面代码展示了4个不同运算对图像造成的影响,可以使用不同图片进行查看文章来源地址https://www.toymoban.com/news/detail-440031.html

import cv2
import numpy as np


def show(name, img):
    cv2.imshow(name, img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


cat = cv2.resize(cv2.imread('../images/cat.jpg'), (400, 360))
dog = cv2.resize(cv2.imread('../images/dog.jpg'), (400, 360))
# 与运算 1 & 1 = 1, 其他为0
img_and = cv2.bitwise_and(cat, dog)
show('and', np.hstack((cat, dog, img_and)))

# 或运算 0 | 0 = 0, 其他为1
img_or = cv2.bitwise_or(cat, dog)
show('or', np.hstack((cat, dog, img_or)))

# 非运算 !x = 255 - x
img_not = cv2.bitwise_not(cat)
show('not', np.hstack((cat, img_not)))

# 异或运算 1 ^ 1, 0 ^ 0 为0,其他为1
img_xor = cv2.bitwise_xor(cat, dog)
show('xor', np.hstack((cat, dog, img_xor)))

到了这里,关于opencv位运算,cv2.bitwise_and,cv2.bitwise_or,cv2.bitwise_not,cv2.bitwise_xor的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包