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创建和使用字典实例详解
Nov 01 Python
Python爬取网易云音乐热门评论
Mar 31 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
Apr 30 Python
基于python绘制科赫雪花
Jun 22 Python
numpy.std() 计算矩阵标准差的方法
Jul 11 Python
Python银行系统实战源码
Oct 25 Python
python爬取本站电子书信息并入库的实现代码
Jan 20 Python
pyqt5数据库使用详细教程(打包解决方案)
Mar 25 Python
Python3操作读写CSV文件使用包过程解析
Apr 10 Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 Python
Python内置函数property()如何使用
Sep 01 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
php 设计模式之 单例模式
2008/12/19 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
实测jquery data()如何存值
2013/08/18 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
javascript在子页面中函数无法调试问题解决方法
2014/01/17 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
js实现飞机大战游戏
2020/08/26 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
市场部业务员岗位职责
2014/04/02 职场文书
正风肃纪剖析材料范文
2014/10/10 职场文书
教师岗位说明书
2015/09/30 职场文书