歡迎您光臨本站 註冊首頁

30行Python代碼實現高分辨率圖像導航的方法

←手機掃碼閱讀     kyec555 @ 2020-06-09 , reply:0

在項目開發的過程中,經常會遇到要查看圖像細節的問題,這時候我們通常會,滾動滑輪將圖像放大,或者使用電腦內置的放大器功能進行查看,如下圖所示,是我使用Altium Designer軟件的高清晰圖像導航功能查看PCB細節的效果:

那麼作為一位程序員,是否可以做到這點呢? 

當然可以,Python在手,天下我有~

1、導入圖像功能

導入圖像功能是基於Windows命令窗口實現的,用戶在命令窗口調用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、圖像降採樣功能

將導入的圖像進行降採樣,形成一個縮小的整體效果圖,方便和超分辨率放大的圖像進行對比觀察,效果如下所示:

 實現代碼如下所示:

  small = img  for _i in range(3):    #圖像降採樣    small = cv.pyrDown(small)

 

3、高分辨率導航功能

最後實現超分辨率圖像導航功能,這裡創建一個鼠標事件,超分辨率圖像跟隨著鼠標移動,實現導航效果,效果如下所示:

實現代碼如下所示:

  #鼠標響應事件  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()

[kyec555 ] 30行Python代碼實現高分辨率圖像導航的方法已經有232次圍觀

http://coctec.com/docs/python/shhow-post-237629.html