按得到的平均值对矩阵排序

2024-10-06 10:20:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用OpenCV和Python。你知道吗

我用OpenCV和Python分离了RGB图像的绿色、红色和蓝色部分。然后将每个矩阵细分为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来得到平均值,但是我不太明白如何根据平均值对这些矩阵进行排序?你知道吗


Tags: inimportnumpyimgfornpchannel矩阵
1条回答
网友
1楼 · 发布于 2024-10-06 10:20:58

最简单的方法是计算所有平均数,将平均数和矩阵成对保存(可以使用元组),然后排序。你知道吗

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应该按照平均数排序。你可以遍历它来得到矩阵。你知道吗

相关问题 更多 >