【问题标题】:Find average coordinate from a coordinate tuple with python使用python从坐标元组中查找平均坐标
【发布时间】:2016-03-03 19:30:04
【问题描述】:

您好,我的背景是黑色的,并且有一个白点。我有白色像素的所有坐标。

points = np.where(image==255)

“打印点”给了我这个输出,我看到一个元组列表中有两个数组:

(array([119, 119, 119, 119, 120, 120, 120, 120, 120, 120, 120, 120, 120,
   120, 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
   121, 121, 121, 121, 121, 121, 122, 122, 122, 122, 122, 122, 122,
   122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
   123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
   123, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124,
   124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
   124, 124, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125,
   125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
   125, 125, 125, 125, 125, 125, 125, 126, 126, 126, 126, 126, 126,
   126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
   126, 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, 127, 127,
   127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
   127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
   128, 128, 128, 128, 129, 129, 129, 129, 129, 129, 129, 129, 129,
   129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
   129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 130, 130, 130,
   130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
   130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
   130, 130, 130, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
   131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
   131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 132, 132,
   132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
   132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
   132, 132, 132, 132, 132, 132, 133, 133, 133, 133, 133, 133, 133,
   133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
   133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
   133, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
   134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
   134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 135, 135, 135,
   135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
   135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
   135, 135, 135, 135, 135, 135, 136, 136, 136, 136, 136, 136, 136,
   136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
   136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
   136, 136, 136, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
   137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
   137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
   138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
   138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
   138, 138, 138, 138, 138, 138, 138, 138, 138, 139, 139, 139, 139,
   139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
   139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
   139, 139, 139, 139, 139, 140, 140, 140, 140, 140, 140, 140, 140,
   140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
   140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
   141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
   141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
   141, 141, 141, 141, 141, 141, 141, 141, 142, 142, 142, 142, 142,
   142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
   142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
   142, 142, 142, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
   143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
   143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 144, 144, 144,
   144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
   144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
   144, 144, 144, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
   145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
   145, 145, 145, 145, 145, 145, 145, 145, 146, 146, 146, 146, 146,
   146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
   146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 147,
   147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
   147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
   147, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
   148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
   148, 148, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
   149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
   149, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
   150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 151, 151,
   151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
   151, 151, 151, 151, 151, 152, 152, 152, 152, 152, 152, 152, 152,
   152, 152, 152, 152, 152, 152, 152, 152, 152, 153, 153, 153, 153,
   153, 153, 153, 153, 153, 153, 153, 153, 153, 154, 154, 154, 154, 154]), array([77, 78, 79, 80, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 71,
   72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 69, 70,
   71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
   88, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
   84, 85, 86, 87, 88, 89, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
   78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 66, 67, 68, 69,
   70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
   87, 88, 89, 90, 91, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
   77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 64,
   65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
   82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 64, 65, 66, 67, 68,
   69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
   86, 87, 88, 89, 90, 91, 92, 93, 63, 64, 65, 66, 67, 68, 69, 70, 71,
   72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
   89, 90, 91, 92, 93, 94, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
   74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
   91, 92, 93, 94, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
   75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
   92, 93, 94, 95, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
   75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
   92, 93, 94, 95, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
   75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
   92, 93, 94, 95, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
   74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
   91, 92, 93, 94, 95, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
   73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
   90, 91, 92, 93, 94, 95, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
   72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
   89, 90, 91, 92, 93, 94, 95, 96, 61, 62, 63, 64, 65, 66, 67, 68, 69,
   70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
   87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 61, 62, 63, 64, 65, 66, 67,
   68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
   85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 61, 62, 63, 64, 65, 66,
   67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
   84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 62, 63, 64, 65, 66,
   67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
   84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 62, 63, 64, 65, 66,
   67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
   84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 62, 63, 64, 65, 66,
   67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
   84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 62, 63, 64, 65, 66,
   67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
   84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 63, 64, 65, 66, 67, 68,
   69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
   86, 87, 88, 89, 90, 91, 92, 93, 94, 63, 64, 65, 66, 67, 68, 69, 70,
   71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
   88, 89, 90, 91, 92, 93, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
   75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
   92, 93, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
   80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 65, 66, 67, 68,
   69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
   86, 87, 88, 89, 90, 91, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
   77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 67, 68, 69,
   70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
   87, 88, 89, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
   83, 84, 85, 86, 87, 88, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
   81, 82, 83, 84, 85, 86, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
   83, 84, 76, 77, 78, 79, 80]))

我想找到平均坐标。看起来像(x,y)。

我该怎么做?

【问题讨论】:

  • 平均...有什么指标?
  • 平均坐标是单独的x和y平均值的坐标,所以[ np.average(points[0]), np.average(points[1])]

标签: python numpy average pixel coordinate


【解决方案1】:

np.where 返回一个与2, N 数组同构的元组,您需要在N 白点上计算平均值,即在第二个轴上,从0 计数,是axis=1 - -- 最终你的计算只是一条线

np.average(np.where(image==255), axis=1)

【讨论】:

  • 我将它与 zip 功能合并。
【解决方案2】:

您已经可以使用 python 的内置函数来计算每个元组部分的总和。不要忘记检查 len(points[n]) > 0 以避免除以零异常。

myAvgPoint = (sum(points[0])/len(points[0]),sum(points[1])/len(points[1]))

【讨论】:

  • 这不是不可能的:)
【解决方案3】:

np.average(np.where(image==255), axis=1)

这是真正的解决方案。

我的结果是: [136.6045082 78.33913934]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 2021-05-03
    • 2013-10-20
    相关资源
    最近更新 更多