月光魔草

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

图像三原色分离,叫做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])  

 

posted on 2020-06-10 15:17  月光魔草  阅读(213)  评论(0编辑  收藏  举报