【问题标题】:Sort Matrices by Mean Value Obtained按获得的平均值对矩阵进行排序
【发布时间】:2019-05-02 02:42:03
【问题描述】:

我正在使用 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 来获取均值,但是我不太明白如何根据均值获得的值对这些矩阵进行排序?

【问题讨论】:

    标签: python numpy opencv


    【解决方案1】:

    最简单的方法是计算所有均值,将均值和矩阵成对保存(您可以为此使用元组),然后排序。

    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 应该根据手段进行排序。您可以遍历它以获取矩阵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多