zoukankan      html  css  js  c++  java
  • OpenCV中的图像插值示例

    本文地址:http://www.cnblogs.com/QingHuan/p/7384433.html,转载请注明出处

    ===============================================================

    图像插值的用处是把图像中的“划痕”等通过插值的方式去除掉,

    英文对应的是:image inpainting,可以通过英文检索相关论文,比如
    《High-Resolution Image Inpainting using Multi-Scale Neural Patch Synthesis》

    1. 第一个例子:

    这里结合 http://docs.opencv.org/trunk/df/d3d/tutorial_py_inpainting.html 然后略作修改,给出了第一个例子

    首先给出代码:

    import numpy as np
    import cv2
    
    img = cv2.imread('messi.png')
    mask = cv2.imread('mask.png',0)
    
    img = cv2.resize(img, (846, 634))
    mask = cv2.resize(mask, (846, 634))
    
    dst = cv2.inpaint(img,mask,3,cv2.INPAINT_TELEA)
    
    cv2.imwrite("messi_result.png", dst)
    cv2.imshow('dst',dst)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    这里做了Resize,把两幅图片的尺寸调成一样的了,因为图片是手动的截图

    下面是损坏后的图片,MASK和修复后的图片:

    关于resize的补充阅读:http://blog.csdn.net/ikerpeng/article/details/17239809

    2. 第二个例子:

    这里是两张图片,一张是小男孩的图片,一张是通过姿态识别标注后的小男孩图片:

    这两张分别是 boy_t.png 和 boy.jpg

    那么如何通过算法来找出他们的差异呢?找到的差异可否当作第一个例子中的 MASK 来使用呢?

    答案是可以的:

    效果如图:

    四张图从左到右分别是姿态识别标注后的图、原图、根据MASK插值后的图、MASK(也就是前两张的差异)

    下面是代码:

    import numpy as np
    import cv2
    
    mask = cv2.imread('boy.jpg')
    img = cv2.imread('boy_t.png')
    
    img = cv2.resize(img, (280, 500))
    mask = cv2.resize(mask, (280, 500))
    
    cv2.imshow('origin', mask)
    mask = cv2.subtract(img, mask)
    mask = cv2.cvtColor(mask, cv2.COLOR_RGB2GRAY)
    
    cv2.imshow('img', img)
    cv2.imshow('mask', mask)
    
    dst = cv2.inpaint(img, mask, 3, cv2.INPAINT_TELEA)
    
    # cv2.imwrite("messi_result.png", dst)
    cv2.imshow('dst',dst)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
  • 相关阅读:
    python变量和常量
    python运算符
    python 数据类型强制转换
    Python 变量的缓存机制
    Python格式化输出
    Python 自动类型转换
    Python 六大标准基础数据类型
    Python 基础
    pyhton 初识
    计算机基础
  • 原文地址:https://www.cnblogs.com/QingHuan/p/7384433.html
Copyright © 2011-2022 走看看