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函数式编程指南(二):从函数开始
Jun 24 Python
Python数据类型详解(二)列表
May 08 Python
浅谈python中列表、字符串、字典的常用操作
Sep 19 Python
Python使用win32 COM实现Excel的写入与保存功能示例
May 03 Python
对django中render()与render_to_response()的区别详解
Oct 16 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
python之信息加密题目详解
Jun 26 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
基于python2.7实现图形密码生成器的实例代码
Nov 05 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
Aug 03 Python
Python logging模块进行封装实现原理解析
Aug 07 Python
如何基于Python和Flask编写Prometheus监控
Nov 25 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
php实现mysql同步的实现方法
2009/10/21 PHP
iOS10推送通知开发教程
2016/09/19 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
详解ES6中的let命令
2020/04/05 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
深入理解react-router 路由的实现原理
2018/09/26 Javascript
vue写h5页面的方法总结
2019/02/12 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
python中join()方法介绍
2018/10/11 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
flask 实现token机制的示例代码
2019/11/07 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
团员个人的自我评价
2013/12/02 职场文书
小组合作学习反思
2014/02/18 职场文书
团队队名口号大全
2014/06/06 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
总结会主持词
2015/07/02 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
python - timeit 时间模块
2021/04/06 Python