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 相关文章推荐
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 Python
python删除服务器文件代码示例
Feb 09 Python
django 发送手机验证码的示例代码
Apr 25 Python
Python面向对象之类的定义与继承用法示例
Jan 14 Python
python安装scipy的方法步骤
Jun 26 Python
Python使用scrapy爬取阳光热线问政平台过程解析
Aug 14 Python
解决Django连接db遇到的问题
Aug 29 Python
python列表推导和生成器表达式知识点总结
Jan 10 Python
python实现QQ邮箱发送邮件
Mar 06 Python
浅谈Python 参数与变量
Jun 20 Python
Python Pandas数据分析工具用法实例
Nov 05 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中的字符串函数
2006/11/24 PHP
Php获取金书网的书名的实现代码
2010/06/11 PHP
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
PHP CURL 多线程操作代码实例
2015/05/13 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
jquery数组之存放checkbox全选值示例代码
2013/12/20 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
node+koa实现数据mock接口的方法
2017/09/20 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
python控制台英汉汉英电子词典
2020/04/23 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
adidas泰国官网:adidas TH
2020/07/11 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
保险公司开门红口号
2014/06/21 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
银行贷款收入证明
2014/10/17 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
教师党员个人自我评价
2015/03/04 职场文书
给下属加薪申请报告
2015/05/15 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python
MySQL事务的隔离级别详情
2022/07/15 MySQL