计算机视觉 OpenCV (7) 图像叠加

作者: zidea | 来源:发表于2019-08-14 19:52 被阅读24次
    img = cv2.imread('messi5.jpg')
    print(img.shape)
    print(img.size)
    print(img.dtype)
    

    读取图片 messi5.jpg 梅西相比大家都认识估计 opencv 团队也是梅西的粉丝。然后通过输出查看图片数据的信息,为 342 x 548 矩阵每一个元素是一个 3 维数组。

    (342, 548, 3)
    562248
    uint8
    

    通过 cv.split 方法可以将图片分离出 b g r 三个通道,使用 cv2.merge 将通道进行合并。

    b,g,r = cv2.split(img)
    img = cv2.merge((b,g,r))
    
    img = cv2.imread('messi5.jpg')
    print(img.shape)
    print(img.size)
    print(img.dtype)
    b,g,r = cv2.split(img)
    img = cv2.merge((b,g,r))
    
    
    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    

    ROI

    既然我们读取到图片数据就可以将图像一部分像素读取出到一个对象。

    ball = img[280:340,330:390]
    img[273:333,100:160] = ball
    

    我们通过测量将球周围像素提取出然后,然后通过merge 将提取球像素和原图进行合并得到下图中的效果。

    img = cv2.imread('messi5.jpg')
    img2 = cv2.imread('opencv-logo.png')
    dst = cv2.add(img, img2);
    

    调整大小

    我们需要通过 cv2.resize 调整图片大小,然后通过调用 addWeight 方法为两张大小一致图片进行合并,表示图片合并后所占比例。

    img = cv2.resize(img,(512,512))
    img2 = cv2.resize(img2,(512,512))
    
    dst = cv2.addWeighted(img, .9,img2, .1, 0);
    

    相关文章

      网友评论

        本文标题:计算机视觉 OpenCV (7) 图像叠加

        本文链接:https://www.haomeiwen.com/subject/vtvjdctx.html