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编程判断一个正整数是否为素数的方法
Apr 14 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
Python之Scrapy爬虫框架安装及简单使用详解
Dec 22 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
python+mysql实现学生信息查询系统
Feb 21 Python
详解Python安装tesserocr遇到的各种问题及解决办法
Mar 07 Python
Python进阶:生成器 懒人版本的迭代器详解
Jun 29 Python
Django Rest framework三种分页方式详解
Jul 26 Python
Django 对IP访问频率进行限制的例子
Aug 30 Python
Django操作session 的方法
Mar 09 Python
Python flask框架端口失效解决方案
Jun 04 Python
python 利用zmail库发送邮件
Sep 11 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
在字符串中把网址改成超级链接
2006/10/09 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
js中的面向对象入门
2017/03/06 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
js模拟实现烟花特效
2020/03/10 Javascript
JavaScript实现轮播图特效
2020/04/10 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
win与linux系统中python requests 安装
2016/12/04 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
dpn网络的pytorch实现方式
2020/01/14 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
入党自我鉴定范文
2013/10/04 职场文书
销售辞职报告范文
2014/01/12 职场文书
《中华少年》教学反思
2014/02/15 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
小学优秀教师材料
2014/12/15 职场文书
新员工辞职信范文
2015/05/12 职场文书
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android