Search code examples
pythonnumpyaveragepixelcoordinate

Find average coordinate from a coordinate tuple with python


Hi i have a black background and there is a white spot. I have all coordinates of the white pixels.

points = np.where(image==255)

"print points" gave me this output, i see there is two arrays in a tuple list:

(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]))

I want to find average coordinate. Looks like (x,y).

How can i do this ?


Solution

  • np.where returns a tuple that's isomorphic to a 2, N array, you want an average computed on the N white points, that is on the second axis that, counting from 0, is axis=1 --- eventually your computation is just a one liner

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