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实现strcmp函数功能示例
Mar 25 Python
Python使用Tkinter实现机器人走迷宫
Jan 22 Python
python2.7安装图文教程
Mar 13 Python
numpy.std() 计算矩阵标准差的方法
Jul 11 Python
详解Python进阶之切片的误区与高级用法
Dec 24 Python
Flask核心机制之上下文源码剖析
Dec 25 Python
Python实现的在特定目录下导入模块功能分析
Feb 11 Python
pandas 空数据处理方法详解
Nov 02 Python
wxPython实现整点报时
Nov 18 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
python爬取微博评论的实例讲解
Jan 15 Python
使用pipenv管理python虚拟环境的全过程
Sep 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
dedecms函数分享之获取某一栏目所有子栏目
2014/05/19 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
php post换行的方法
2020/02/03 PHP
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
2014/09/01 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
Javascript中apply、call、bind的巧妙使用
2016/08/18 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
Asics日本官网:鬼冢八喜郎创立的跑鞋运动品牌
2017/10/18 全球购物
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
2016/10/06 面试题
大三自我鉴定范文
2013/10/05 职场文书
体育教师自荐信范文
2013/12/16 职场文书
优秀老员工获奖感言
2014/02/15 职场文书
情人节寄语大全
2014/04/11 职场文书
校园文明倡议书
2014/05/16 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
合同纠纷调解书
2015/05/20 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android