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 中的int()函数怎么用
Oct 17 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
Python中整数的缓存机制讲解
Feb 16 Python
基于python cut和qcut的用法及区别详解
Nov 22 Python
python全局变量引用与修改过程解析
Jan 07 Python
pytorch 中的重要模块化接口nn.Module的使用
Apr 02 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
python 批量将中文名转换为拼音
Feb 07 Python
python 实现德洛内三角剖分的操作
Apr 22 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 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静态文件返回304技巧分享
2015/01/06 PHP
Prototype 学习 Prototype对象
2009/07/12 Javascript
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
Python中字符串的常见操作技巧总结
2016/07/28 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
python文件和文件夹复制函数
2020/02/07 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
python利用线程实现多任务
2020/09/18 Python
如何用python 操作zookeeper
2020/12/28 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
销售演讲稿范文
2014/01/08 职场文书
加多宝凉茶广告词
2014/03/18 职场文书
项目投资意向书
2014/04/01 职场文书
初三毕业评语
2014/12/26 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
MySQL update set 和 and的区别
2021/05/08 MySQL
Python 实现定积分与二重定积分的操作
2021/05/26 Python
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技