代码
import cv2 as cv
import numpy as np
src = np.zeros(shape=(500, 500, 3), dtype=np.uint8)
src[100:200, 100:200, 1] = 255
src[100:200, 100:200, 2] = 255
cv.imshow('pic1', src)
src2 = np.zeros(shape=(500, 500, 3), dtype=np.uint8)
src2[150:250, 150:250, 2] = 255
cv.imshow('pic2', src2)
add_pic = cv.bitwise_and(src, src2)
cv.imshow('add', add_pic)
not_pic = cv.bitwise_not(src)
cv.imshow('not', not_pic)
or_pic = cv.bitwise_or(src, src2)
cv.imshow('or', or_pic)
xor_pic = cv.bitwise_xor(src, src2)
cv.imshow('xor', xor_pic)
cv.waitKey(0)
cv.destroyAllWindows()
实验结果
解释
重点注意下面这四个函数:
add_pic = cv.bitwise_and(src, src2)
not_pic = cv.bitwise_not(src, src2)
or_pic = cv.bitwise_or(src, src2)
xor_pic = cv.bitwise_xor(src, src2)
像素之间的与、或、非、异或跟数学中学习的是一模一样的。也就是说,当两个相与的图片的同一个像素的位置符合下面这张表格,同理或门、非门、异或门也是同样的道理。
延申阅读
(一):单通道图,
俗称灰度图,每个像素点只能有有一个值表示颜色,它的像素值在0到255之间,0是黑色,255是白色,中间值是一些不同等级的灰色。(也有3通道的灰度图,3通道灰度图只有一个通道有值,其他两个通道的值都是零)。
(二):三通道图,
每个像素点都有3个值表示 ,所以就是3通道。也有4通道的图。例如RGB图片即为三通道图片,RGB色彩模式是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。总之,每一个点由三个值表示。