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 21 Python
python使用7z解压apk包的方法
Apr 18 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
python使用phoenixdb操作hbase的方法示例
Feb 28 Python
pyqt 多窗口之间的相互调用方法
Jun 19 Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
Python pip使用超时问题解决方案
Aug 03 Python
详解selenium + chromedriver 被反爬的解决方法
Oct 28 Python
用基于python的appium爬取b站直播消费记录
Apr 17 Python
Python 解决空列表.append() 输出为None的问题
May 23 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)二
2006/10/09 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
Javascript 学习书 推荐
2009/06/13 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
vue单页开发父子组件传值思路详解
2018/05/18 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
python实现简单登陆系统
2018/10/18 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
美国孩之宝玩具官网:Hasbro Pulse
2019/06/24 全球购物
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
预备党员的自我评价
2014/03/12 职场文书
安全生产计划书
2014/05/04 职场文书
计生工作先进事迹
2014/08/15 职场文书
吴仁宝观后感
2015/06/09 职场文书
居住证明范文
2015/06/17 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书