四时宝库

程序员的知识宝库

opencv实现图像上的放大器(opencv用resize放大图像尺寸)

这个放大器的代码还是来自于opencv的官网,是官网提供的样例代码

在opencv的源码中,目录为:opencv/samples/python/browse.py

那么我们运行这个源码,命令行提示如下:


现在正在建立一个4096x4096 的图片,同时程序会建立一个名为preview的窗口,如下:


这个preview中显示的图片就是代码自动生成的4096x4096的图片。

可以看到,图片上很多细节看不到,细节看起来比较模糊,因为图片太大,但是我们的显示窗口相对来说没有那么大。假设电脑屏幕就只有preview窗口这个大的。

这时候,我们就主要一个放大镜的功能了。

我们把鼠标放在原图的某个位置,就会在以这个位置为中心,提取一个600*800区域的子图片出来,


上图中,preview是原图,zoom是鼠标放在原图上后,显示的子图片

子图片就是把原图上的一个600x800区域的像素复制出来单独显示到zoom窗口里的。

这样显示出来就能看到细节了

这样就实现了放大器的功能。

代码如下:

(base) zhaomingming@iMac python % vim browse.py


1 #!/usr/bin/env python

2

3 '''

4 browse.py

5 =========

6

7 Sample shows how to implement a simple hi resolution image navigation

8

9 Usage

10 -----

11 browse.py [image filename]

12

13 '''

14

15 # Python 2/3 compatibility

16 from __future__ import print_function

17 import sys

18 PY3 = sys.version_info[0] == 3

19

20 if PY3:

21 xrange = range

22

23 import numpy as np

24 import cv2 as cv

25

26 # built-in modules

27 import sys

28

29 def main():

30 if len(sys.argv) > 1:

31 fn = cv.samples.findFile(sys.argv[1])

32 print('loading %s ...' % fn)

33 img = cv.imread(fn)

34 if img is None:

35 print('Failed to load fn:', fn)

36 sys.exit(1)

37

38 else:

39 sz = 4096

40 print('generating %dx%d procedural image ...' % (sz, sz))

41 img = np.zeros((sz, sz), np.uint8)

42 track = np.cumsum(np.random.rand(500000, 2)-0.5, axis=0)

43 track = np.int32(track*10 + (sz/2, sz/2))

44 cv.polylines(img, [track], 0, 255, 1, cv.LINE_AA)

45

46

47 small = img

48 for _i in xrange(3):

49 small = cv.pyrDown(small)

50

51 def onmouse(event, x, y, flags, param):

52 h, _w = img.shape[:2]

53 h1, _w1 = small.shape[:2]

54 x, y = 1.0*x*h/h1, 1.0*y*h/h1

55 zoom = cv.getRectSubPix(img, (800, 600), (x+0.5, y+0.5))

56 cv.imshow('zoom', zoom)

57

58 cv.imshow('preview', small)

59 cv.setMouseCallback('preview', onmouse)

60 cv.waitKey()

61 print('Done')

62

63

64 if __name__ == '__main__':

65 print(__doc__)

66 main()

67 cv.destroyAllWindows()

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接