计算机视觉 OpenCV (8) 与或非操作
2019-08-15 本文已影响10人
zidea

import cv2
import numpy as np
我们引入 numpy 和 opencv 两个库
img1 = np.zeros((250,500,3), np.uint8)
img1 = cv2.rectangle(img1,(200,0),(300,100),(255,255,255),-1)
第一张图我们创建一张背景全黑而中间部分为白色小块的图。

img2 = np.zeros((250,500,3), np.uint8)
img2 = cv2.rectangle(img2,(250,0),(500,250),(255,255,255),-1)
第二张图为左侧为黑色右侧为白色的图

# bitAnd = cv2.bitwise_and()
cv2.imshow('img1',img1)
cv2.imshow('img2',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
与(and)
bitAnd = cv2.bitwise_and(img2,img1)
cv2.imshow('img1',img1)
cv2.imshow('img2',img2)
cv2.imshow('bitAnd',bitAnd)

这个理解起来应该不难,
或(or)
bitOr = cv2.bitwise_or(img2,img1)
cv2.imshow('bitOr',bitOr)

Xor
bitXor = cv2.bitwise_xor(img2,img1)
cv2.imshow('bitXor',bitXor)

非(Not)
bitNot = cv2.bitwise_not(img2)
cv2.imshow('bitNot',bitNot)

在计算机世界里只有 1 和 0 我们熟悉的十进制数字可表示由 1 和 0 组成二进制进行表示。

我们看如何用二进制表示 23 ,有很多方法用于将十进制转换为二进制,我们用小格来表示。

我们将每一个小方格对应 2 几次方。

用于对应数除以 23 如果不能够整除 例如 128 除以 23 为 5 ,16 除以 23 不够除所以在 16 给出 1 然后 23 - 16 = 7

8 除以 7 可以除,所以给 0 然后是 4 不够被 7 除,所以给 1 7 - 4 = 3 剩余 3 分别为 2 + 1
那么我们可以用二进制表示 255 。每一位上都是 1,我们这里与、或非运算都是二进制进行与、或非操作。




这里对两张图进行与、或非运算进行就是对颜色每一个位二进制进行与、或非操作。

