Сортировать матрицы по полученному среднему значению - PullRequest
2 голосов
/ 01 мая 2019

Я работаю с OpenCV и Python.

Я разделил зеленый, красный и синий компоненты изображения RGB с помощью OpenCV и Python. Затем разделите каждую из этих матриц на подматрицы 8x8, чтобы работать с ними. Пока это уже сделано.

Для каждой из подматриц 8x8, которые она генерирует, мне нужно получить среднее значение каждой из них и упорядочить матрицы в порядке убывания в соответствии с полученным средним значением. Я застрял в этом. Мне нужна помощь.

Код, который у меня есть, следующий:

import cv2
import numpy as np 

img = cv2.imread("6.jpg")
b,g,r = cv2.split(img)

def sub_matrices(color_channel):
    matrices = []

    for i in range(int(color_channel.shape[0]/8)):
        for j in range(int(color_channel.shape[1]/8)):
            matrices.append(color_channel[i*8:i*8 + 8, j*8:j*8+8])
    return matrices

#returns list of sub matrices
r_submatrices = sub_matrices(r)
g_submatrices = sub_matrices(g)
b_submatrices = sub_matrices(b)

print (r_submatrices)
print (g_submatrices)
print (b_submatrices)

for i in r_submatrices:

    x = np.mean(i)

    print(i)

Я использую numpy для получения среднего значения, но тогда я не очень хорошо понимаю, как я могу упорядочить эти матрицы в зависимости от значения, которое я получаю в среднем?

1 Ответ

1 голос
/ 01 мая 2019

Самый простой способ - это вычислить все средства, сохранить средства и матрицы в виде пар (для этого можно использовать кортеж), а затем отсортировать.

matrix_mean_list = []
for i in r_submatrices:
    x = np.mean(i)
    matrix_mean_list.append((i, x))

matrix_mean_list = sorted(matrix_mean_list, key=lambda m: m[1])

Теперь matrix_mean_list следует отсортировать поуважение к средствам.Вы можете перебрать его, чтобы вернуть матрицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...