30行Python代码实现高分辨率图像导航的方法


Posted in Python onMay 22, 2020

在项目开发的过程中,经常会遇到要查看图像细节的问题,这时候我们通常会,滚动滑轮将图像放大,或者使用电脑内置的放大器功能进行查看,如下图所示,是我使用Altium Designer软件的高清晰图像导航功能查看PCB细节的效果:

30行Python代码实现高分辨率图像导航的方法

那么作为一位程序员,是否可以做到这点呢? 

当然可以,Python在手,天下我有~

1、导入图像功能

导入图像功能是基于Windows命令窗口实现的,用户在命令窗口调用Python文件即可导入图像信息,输入指令及效果如下所示:

30行Python代码实现高分辨率图像导航的方法

实现代码如下所示:

if len(sys.argv) > 1:
  #根据控制台输入的图像,进行导入
  fn = cv.samples.findFile(sys.argv[1])
  print('loading %s ...' % fn)
  img = cv.imread(fn)
  if img is None:
    print('Failed to load fn:', fn)
    sys.exit(1)

2、图像降采样功能

将导入的图像进行降采样,形成一个缩小的整体效果图,方便和超分辨率放大的图像进行对比观察,效果如下所示:

30行Python代码实现高分辨率图像导航的方法

 实现代码如下所示:

small = img
for _i in range(3):
  #图像降采样
  small = cv.pyrDown(small)

3、高分辨率导航功能

最后实现超分辨率图像导航功能,这里创建一个鼠标事件,超分辨率图像跟随着鼠标移动,实现导航效果,效果如下所示:

30行Python代码实现高分辨率图像导航的方法

实现代码如下所示:

#鼠标响应事件
def onmouse(event, x, y, flags, param):
  h, _w = img.shape[:2]
  h1, _w1 = small.shape[:2]
  x, y = 1.0*x*h/h1, 1.0*y*h/h1
  zoom = cv.getRectSubPix(img, (800, 600), (x+0.5, y+0.5))
  cv.imshow('zoom', zoom)

4、图像显示功能

最后将图像显示出来就可以了,实现代码如下所示:

cv.imshow('preview', small)
cv.setMouseCallback('preview', onmouse)
cv.waitKey()

到此这篇关于30行Python代码实现高分辨率图像导航的方法的文章就介绍到这了,更多相关Python 高分辨率图像导航内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
django实现前后台交互实例
Aug 07 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
Python Logging 日志记录入门学习
Jun 02 Python
python实现将汉字保存成文本的方法
Nov 16 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
Python 导入文件过程图解
Oct 15 Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 #Python
Python pandas如何向excel添加数据
May 22 #Python
python3.8.1+selenium实现登录滑块验证功能
May 22 #Python
在TensorFlow中实现矩阵维度扩展
May 22 #Python
Python多个装饰器的调用顺序实例解析
May 22 #Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 #Python
Tensorflow tf.tile()的用法实例分析
May 22 #Python
You might like
无线电广播的开始
2002/01/30 无线电
Laravel 5框架学习之环境与配置
2015/04/08 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
实例讲解PHP表单
2020/06/10 PHP
js中匿名函数的N种写法
2010/09/08 Javascript
写出高效jquery代码的19条指南
2014/03/19 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
网页收藏夹显示ICO图标(代码少)
2015/08/04 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
[16:01]夜魇凡尔赛茶话会 第二期01:你比划我猜
2021/03/11 DOTA
在Docker上开始部署Python应用的教程
2015/04/17 Python
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
Python如何存储数据到json文件
2020/03/09 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
SmartBuyGlasses丹麦:网上购买名牌太阳镜、眼镜和隐形眼镜
2016/10/01 全球购物
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
海南地接欢迎词
2014/01/14 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
一篇文章弄懂Python中的内建函数
2021/08/07 Python