基于Python的opencv学习练习(四)按位运算

图像的按位运算

这里包括的按位操作有:AND,OR,NOT,XOR 等,
在cv2中调用的函数包括 cv2.bitwise_not,cv2.bitwise_and,cv2.bitwise_or,cv2.bitwise_xor

import cv2
import matplotlib.pyplot as plt
# 加载图像
img1=cv2.imread('2.jpg',1)
img2=cv2.imread('num.jpg',1)
rows,cols,channels = img2.shape  #取图片的行列以及渠道
roi = img1[0:rows, 0:cols ]  #将图片img1的所有像素取出赋予变量roi
img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)  #对RGB图像进行灰度化
ret, mask = cv2.threshold(img2gray, 175, 255, cv2.THRESH_BINARY) #对灰度图像二值化
mask_inv = cv2.bitwise_not(mask) #对二值图像mask进行取反操作
# 取 roi 中与 mask 中不为零的值对应的像素的值,其他值为 0
# 注意这里必须有 mask=mask 或者 mask=mask_inv, 其中的 mask= 不能忽略
img1_bg = cv2.bitwise_and(roi,roi,mask = mask)
# 取 roi 中与 mask_inv 中不为零的值对应的像素的值,其他值为 0 。
img2_fg = cv2.bitwise_and(img2,img2,mask = mask_inv)
dst = cv2.add(img1_bg,img2_fg)
img1[0:rows, 0:cols ] = dst
plt.figure('img2gray')
plt.imshow(img2gray)
plt.figure('mask')
plt.imshow(mask)
plt.figure('mask_inv')
plt.imshow(mask_inv)
plt.figure('img1_bg')
plt.imshow(img1_bg)
plt.figure('img2_fg')
plt.imshow(img2_fg)
plt.show()


cv2.cvtColor() 是用来做图像类型的转换可以将图像由彩色的RGB转化为灰度,或者HSV等其他颜色通道。
该函数包含两个参数。
第一个为要进行转化的图片
第二个为需要进行转化的类型cv2.COLOR_BGR2GRAY 为将图片有RGB转化为GRAY灰度
cv2.threshold()函数对图像进行二值化
第一个参数为进行二值化的灰度图像
第二个参数为进行二值化的阈值
第三个为255 灰度颜色总个数,一般均为255
第四个为进行二值化的方式,opencv中包含多种方式可以进行选择

cv2.bitwise_not()度图像进行非操作,二值化的图像均是由0,1,都成,取非之后将会对所有的值进行取反。原来的1变为0。原来的0变为1。即图像颜色由黑变为白,由白变为黑。
cv2.bitwise_and()对图像进行与操作时需要添加mask 。mask 和进行操作的图像的大小相同。进行与操作的结果为mask中像素值为1保留带操作图像的像素值。mask中像素值为0则将操作图像的像素值变为0

你可能感兴趣的:(opencv练习)