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 相关文章推荐
python 从远程服务器下载东西的代码
Feb 10 Python
Django查询数据库的性能优化示例代码
Sep 24 Python
使用python 打开文件并做匹配处理的实例
Jan 02 Python
pycharm 实现显示project 选项卡的方法
Jan 17 Python
python求最大值最小值方法总结
Jun 25 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
Flask框架 CSRF 保护实现方法详解
Oct 30 Python
Python实现非正太分布的异常值检测方式
Dec 09 Python
Python中zip()函数的解释和可视化(实例详解)
Feb 16 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
python实现简单学生信息管理系统
Apr 09 Python
Python+OpenCV图像处理——图像二值化的实现
Oct 24 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
php多层数组与对象的转换实例代码
2013/08/05 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
2015/07/02 PHP
PHP levenshtein()函数用法讲解
2019/03/08 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
类似框架的js代码
2006/11/09 Javascript
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
使用js获取QueryString的方法小结
2010/02/28 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
微信小程序实现手势图案锁屏功能
2018/01/30 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
python实现二分查找算法
2017/09/21 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
python内存管理机制原理详解
2019/08/12 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
体育学院毕业生自荐信
2013/11/03 职场文书
写给爸爸的道歉信
2014/01/15 职场文书
有趣的广告词
2014/03/18 职场文书
家长会学生演讲稿
2014/04/26 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python