Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从numpy切片对象获取坐标_Python_Numpy - Fatal编程技术网

Python 如何从numpy切片对象获取坐标

Python 如何从numpy切片对象获取坐标,python,numpy,Python,Numpy,我有一个函数,它接收一个图像和一个切片对象,指定该图像的一个子区域进行操作。我想在指定的区域周围画一个方框,以便于调试。绘制长方体最简单的方法是获取其两个角的坐标。但是,我找不到一个好方法从切片对象中获取这些坐标 当然,这是一种非常低效的方法,我定义了一个大矩阵,并使用我的切片来计算哪些元素受到影响 #given some slice like this my_slice = np.s_[ymin:ymax+1, xmin:xmax+1] #recover its dimensions lar

我有一个函数,它接收一个图像和一个切片对象,指定该图像的一个子区域进行操作。我想在指定的区域周围画一个方框,以便于调试。绘制长方体最简单的方法是获取其两个角的坐标。但是,我找不到一个好方法从切片对象中获取这些坐标

当然,这是一种非常低效的方法,我定义了一个大矩阵,并使用我的切片来计算哪些元素受到影响

#given some slice like this
my_slice = np.s_[ymin:ymax+1, xmin:xmax+1]

#recover its dimensions
large_matrix = np.ones((max_height, max_width))
large_matrix[my_slice] = 1
minx = np.min(np.where(large_matrix == 1)[0])
maxx = np.max(np.where(large_matrix == 1)[0])
...

如果这是最好的方法,我可能必须从传递切片对象切换到某种矩形对象。

我经常使用
dir
查看对象内部。就你而言:

>>> xmin,xmax = 3,5
>>> ymin,ymax = 2, 6
>>> my_slice = np.s_[ymin:ymax+1, xmin:xmax+1]
>>> my_slice
(slice(2, 7, None), slice(3, 6, None))
>>> my_slice[0]
slice(2, 7, None)
>>> dir(my_slice[0])
['__class__', '__cmp__', '__delattr__', '__doc__', '__format__', 
'__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', 
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', 
'__subclasshook__', 'indices', 'start', 'step', 'stop']
那些
start
step
stop
属性看起来很有用:

>>> my_slice[0].start
2
>>> my_slice[0].stop
7
(说实话,我使用IPython,因此我通常只制作一个对象,然后点击TAB查看内部,而不是使用
dir

因此,要将您的
my_slice
对象转化为角落,只需:

>>> [(sl.start, sl.stop) for sl in my_slice]
[(2, 7), (3, 6)]