图像三原色分离,叫做RGB通道(愈发的感觉像是PS中的图像处理,不过我们是用代码实现的),效果图如下:
染色前:
染色后:
代码如下:
def RBG(src): b,g,r=cv2.split(src) cv2.imshow("b",b) cv2.imshow("g",g) cv2.imshow("r",r) cv2.waitKey(0) def RBG_color(src): b,g,r=cv2.split(src) zeros = np.zeros(src.shape[:2],dtype="uint8") b=cv2.merge([b,zeros,zeros]) g=cv2.merge([zeros,g,zeros]) r=cv2.merge([zeros,zeros,r]) cv2.imshow("b",b) cv2.imshow("g",g) cv2.imshow("r",r) cv2.waitKey(0)
cv2.merge([b,zeros,zeros]):颜色通道合并函数
cv2.split(src):颜色通道拆分函数
以下是图片常用参数示例(可以直接打印出来):
img.shape | 图像的结构 |
img.size | 图像大小 |
img.dtype | 图像元素类型 |
type(img) | 图像数据类型 |
img.ndim | 矩阵的秩 |
img.itemsize | 每个元素的大小,以字节为单位 |
img[0][0][0] | 图像中某一点的像素值 |
图像加减:
反转像素:v=255-src
图像的三种叠加方式:(直接叠加、截断叠加、权重叠加)
x = src2 + src1
x = cv2.add(src1,src2)
x = cv2.addWeighted(src1,0.3,src2,0.7,0)
图像相减的三种方式:(直接减,自定义,subtract() )
x=y-z
x=cv2.subtract(img2,img1)
以下是遍历像素法进行图像相减
import matplotlib.pyplot as plt img=np.zeros(img2.shape) w,h=img2.shape for i in range(w): for j in range(h): if int(img1[i][j])-int(img2[i][j])<0: img[i][j]=0 else: img[i][j]=int(img1[i][j])-int(img2[i][j])