非操作

cv2.bitwise_not(image)

  • 对单一图片进行操作
  • 相当于255减去当前的像素值
  • 用np.hstack进行对比
    • cv2.imshow(“window”,np.hstack((image.new_image)))

与操作

cv2.bitwise_and(image1,image2)

  • 对两张图片进行操作
  • 两个图片的大小保持一致
  • 对应数字转化为2进制 与运算之后 再转化为整数,两个都是1才是1
  • 越与越小,所以图像会变黑

或操作

cv2.bitwise_or(image1,image2)

  • 与 与操作相似,只不过计算的方式不同 两个只要有一个是1就是1
  • 越或越大,图像整体会变白

异或操作

cv2.bitwise_xor(image1,image2)

  • 与或操作相似
  • 操作符为^
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    """
    @Project :Opencv学习
    @File :Opencv位操作.py
    @IDE :PyCharm
    @Author :咋
    @Date :2023/1/12 20:54
    """
    import cv2
    import numpy as np
    test = cv2.imread("image.jpg")
    image = cv2.imread("Handsome.jpg")
    # 图片分割
    test = test[400:1000,500:1200] # 这里写死了,实际可以定义一个函数去判断,然后去修改值
    image = image[400:1000,500:1200] # 这里写死了,实际可以定义一个函数去判断,然后去修改值
    # 非操作
    not_image = cv2.bitwise_not(image)
    cv2.imshow("not_image",np.hstack((image,not_image)))
    # 与操作
    and_image = cv2.bitwise_and(test,image)
    # cv2.imshow("and_image",and_image)
    # 或操作
    or_image = cv2.bitwise_or(test,image)
    # cv2.imshow("or_image",or_image)
    # 异或操作
    xor_image = cv2.bitwise_xor(test,image)
    # cv2.imshow("xor_image",xor_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    image.png
    image.png
    image.png
    image.png