本文地址: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()

OpenCV中的图像插值示例的更多相关文章

  1. 【OpenCV】OpenCV中GPU模块使用

    CUDA基本使用方法 在介绍OpenCV中GPU模块使用之前,先回顾下CUDA的一般使用方法,其基本步骤如下: 1.主机代码执行:2.传输数据到GPU:3.确定grid,block大小: 4.调用内核 ...

  2. 图像金字塔及其在 OpenCV 中的应用范例(下)

    前言 本文将主要讲解如何使用 OpenCV 实现图像分割,这也是图像金字塔在 OpenCV 中的一个重要应用. 关于图像分割 在计算机视觉领域,图像分割(Segmentation)指的是将数字图像细分 ...

  3. 立体视觉-opencv中立体匹配相关代码

    三种匹配算法比较 BM算法: 该算法代码: view plaincopy to clipboardprint? CvStereoBMState *BMState = cvCreateStereoBMS ...

  4. Windows7 32位机上,OpenCV中配置GPU操作步骤

    1.  查看本机配置,查看显卡类型是否支持NVIDIA GPU: 2.  从http://www.nvidia.cn/Download/index.aspx?lang=cn下载最新驱动并安装: 3.  ...

  5. cv2.cornerHarris()详解 python+OpenCV 中的 Harris 角点检测

    参考文献----------OpenCV-Python-Toturial-中文版.pdf 参考博客----------http://www.bubuko.com/infodetail-2498014. ...

  6. Windows7 64位机上,OpenCV中配置CUDA,实现GPU操作步骤

    原文地址:http://blog.csdn.net/haorenka2010/article/details/24385955 按语:首先感谢http://blog.csdn.net/fengbing ...

  7. OpenCV中cv2的用法

    一.读入图像 使用函数cv2.imread(filepath,flags)读入一副图片 filepath:要读入图片的完整路径 flags:读入图片的标志  cv2.IMREAD_COLOR:默认参数 ...

  8. [OpenCV-Python] OpenCV 中的 Gui特性 部分 II

    部分 IIOpenCV 中的 Gui 特性 OpenCV-Python 中文教程(搬运)目录 4 图片 目标 • 在这里你将学会怎样读入一幅图像,怎样显示一幅图像,以及如何保存一幅图像 • 你将要学习 ...

  9. [OpenCV-Python] OpenCV 中的图像处理 部分 IV (二)

    部分 IVOpenCV 中的图像处理 OpenCV-Python 中文教程(搬运)目录 16 图像平滑 目标 • 学习使用不同的低通滤波器对图像进行模糊 • 使用自定义的滤波器对图像进行卷积(2D 卷 ...

随机推荐

  1. Python 互斥锁

    互斥锁Mutex的使用 多个线程处理共享数据,数据会出现问题: 2.7之前每100指令切换一次GIL锁,线程就会sleep,线程会把前100条处理指令存放在CPU缓存内,切换GIL锁后放入另外一个线程 ...

  2. Dijkstra双栈算术表达式求值

    在看algs4的时候偶然发现了这个算法,又回顾了一遍当时数据结构课程里讲过的知识,当时很不在意.迟早是要还的,哎 用python实现了,比较麻烦的是我现在没有解决bash传参的问题,''(" ...

  3. 主从复制跳过错误(未采用GTID)

    DB:5.6.15 主从库没有采用GTID 案例1:从库对象不存在mysql> show slave status \G;*************************** 1. row * ...

  4. Android中intent的分类及使用

    intent分为隐式和显式,显式的浅显易懂就是直呼其名,可用intent类的一个构造函数,直接传入context和想要打开的活动的名称.还可以用setcomponent方法来确定要打开的活动的名称.而 ...

  5. [linux] grep 文本搜索工具

    grep [option] pattern file Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep全称是Global Regular ...

  6. 单元测试系列之一:如何使用JUnit、JaCoCo和EclEmma提高单元测试覆盖率

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢!   原文链接:http://www.cnblogs.com/zishi/p/6726664.html -----如 ...

  7. 将nginx添加至service服务

    一.问题描述: 无法用service命令启动nginx 二.问题分析: /etc/init.d/目录下缺少nginx默认启动脚本 三.问题解决: 在/etc/init.d/路径下添加脚本文件,名称为n ...

  8. MapReduce 踩坑 :Aggregation is not enabled. Try the nodemanager at IP:HOST

    原因:yarn-site.xml 中,有关mapreduce日志查看的aggregation未配置启用 解决:在yarn-site.xml 中加入以下配置 <property> <n ...

  9. 《Visual C# 从入门到精通》第三章使用判断语句——读书笔记

    第3章 使用判断语句 3.1 使用布尔操作符 布尔操作符是求值为true或false的操作符. C#提供了几个非常有用的布尔操作符,其中最简单的是NOT(求反)操作符,它用感叹号(!)表示.!操作符求 ...

  10. 力扣(LeetCode) 821. 字符的最短距离

    给定一个字符串 S 和一个字符 C.返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组. 示例 1: 输入: S = "loveleetcode", C ...