Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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)_Python_Image Processing - Fatal编程技术网

如何查找按重叠排序的矩形顺序(python)

如何查找按重叠排序的矩形顺序(python),python,image-processing,Python,Image Processing,以一个图像作为输入,例如示例一,我想对彩色矩形进行排序,这些矩形通过重叠构成图像 我会解释: 从图像中,我可以得到格式(x,y)中每个点的矩形 例如: {(“蓝色”):[(5,5),(6,5),(7,5),(8,5),(9,5),(10,5),(11,5),(12,5),(13,5),(14,5),(15,5),(16,5),(17,5),(18,5),(19,5),(20,5),(21,5),(22,5),(23,5),(24,5),(25,5),(26,5),(27,5),(5),(27,

以一个图像作为输入,例如示例一,我想对彩色矩形进行排序,这些矩形通过重叠构成图像

我会解释: 从图像中,我可以得到格式(x,y)中每个点的矩形

例如:

{(“蓝色”):[(5,5),(6,5),(7,5),(8,5),(9,5),(10,5),(11,5),(12,5),(13,5),(14,5),(15,5),(16,5),(17,5),(18,5),(19,5),(20,5),(21,5),(22,5),(23,5),(24,5),(25,5),(26,5),(27,5),(5),(27,7),(5,8),(27,8),(5,9),(27,9),(5),(27,11),(27,11),(12),),(5, 13), (27, 13), (5, 14), (27 , 14), (5, 15), (27, 15), (5, 16), (27, 16), (5, 17), (27, 17), (5, 18), (27, 18 ), (5, 19), (27, 19), (5, 20), (5, 21), (27, 21), (5, 22), (27, 22), (5, 23), (27, 23), (5, 24), (5, 25), (27, 25), (5, 26), (27, 26), (5, 27), (6, 27), (7 , 27), (8, 27), (9, 27), (10, 27), (11, 27), (12, 27), (13, 27), (14, 27), (15,27)、(16,27)、(17,27)、(18,27)、(19,27)、(21,27)、(22,27)、(23,27)、(25,27)、(26,27)、(27,27)]

表示一个字典,其键为矩形的颜色,并表示为值​​构成它的每个像素的列表,通过其在空间中的x和y坐标

因此,我可以获得每个矩形的空间坐标((5,5),(27,27)),它们表示左上角和右下角

但是,我找不到一种方法来按矩形的绘制顺序排序

图片中的示例: 矩形的顺序将是蓝色、绿色和黄色,因为我必须按此顺序绘制它们以恢复图像,从而保持正确的相交顺序

p、 s我希望在不使用库的情况下实现它,比如openCV ecc

编辑

我将png图像作为输入。 我创建了一个元组列表,其中包含图像的每个像素 表示为RGB元组(例如(0,0255))


我希望每个矩形都被编码为代表矩形颜色的像素。 :

因此,编码图像允许您知道将首先绘制蓝色矩形,然后绘制绿色矩形,最后绘制黄色矩形

这就是我所说的重叠顺序:
如果我从编码图像中按顺序绘制矩形,我可以获得与原始图像相同的重叠。

虽然问题很不清楚,但我似乎理解您

  • 具有彩色像素的原始列表,这些像素是绘制重叠矩形边缘的结果

  • 能够找出它们起源的矩形

如果是这种情况,则遍历矩形的边缘,每次遇到不同颜色的像素(比如说绿色而不是蓝色),将其记为“绿色与蓝色重叠”)。然后对由此获得的偏序应用拓扑排序


可能有更难的情况,例如多个重叠或多个相同颜色的矩形。

我不明白您的“示例(不是来自图像)”中的所有数字是什么:意思以及它们与问题的关系。输入是什么样子的?你只有图像要处理吗?只有图像。我可以区分每个矩形:def get_pixels(img):`coords={}范围内的j(len(img[0]):范围内的i(len(img)):rgb=img[i][j]如果rgb!=(0,0,0):coords[rgb]=coords.get(rgb,[])+[(i,j)]return coords`我有一个字典,其中包含每个矩形的颜色及其坐标(x,y)。我希望每个矩形在水平方向上编码为5个连续像素:-表示其空间坐标的四个像素((5,5),(27,27))我用从十进制到rgb元组的编码来实现这一点——最后一个像素是矩形的颜色。因此,我制作了一个位图,它必须按照绘制的方式排序1)为每对矩形定位相交的像素;2)计算出相交像素的颜色,并用它来决定两个矩形中的哪个位于其他矩形之上3)使用步骤2中建立的比较对矩形列表进行排序2)我已经实现了一个Kahn算法来进行拓扑排序,它工作得很好。但是如果顶点超过十个,它开始产生mistakes,你知道拓扑排序中的顶点数量是否有一些限制吗?@Wilwbus:显然没有!