You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Matlab的min(min(r,g),b)逻辑转换为Python实现?

实现Matlab逐元素取多矩阵最小值的Python方案

你遇到的AttributeError是因为(r, g)是Python元组,元组没有min()方法。要实现和Matlab完全一致的逐元素对应位置取最小值效果,可借助NumPy的函数完成,以下是具体解决方案:

正确实现代码

假设你的r、g、b是OpenCV处理后得到的NumPy数组(OpenCV返回的图像默认是NumPy数组),可以用两种方式实现:

方式1:对应Matlab嵌套写法

import numpy as np
import cv2

rgb = cv2.normalize(temp_rgb.astype('float'), None, 0.0, 1.0, cv2.NORM_MINMAX)
r = rgb[:, :, 0]
g = rgb[:, :, 1]
b = rgb[:, :, 2]

# 先比较r和g的逐元素最小值,再与b比较
result = np.minimum(np.minimum(r, g), b)

方式2:更简洁的通道轴取最小值

import numpy as np
import cv2

rgb = cv2.normalize(temp_rgb.astype('float'), None, 0.0, 1.0, cv2.NORM_MINMAX)

# 直接沿RGB通道轴(第2轴)取每个像素位置的最小值
result = np.min(rgb, axis=2)

代码说明

  • np.minimum(a, b):对两个NumPy数组执行逐元素比较,返回对应位置的最小值数组,和Matlab中min(a, b)的行为完全一致,嵌套调用即可实现三个数组的逐元素最小值计算。
  • np.min(rgb, axis=2):利用rgb数组(高度, 宽度, 3)的形状,沿通道轴(第2个轴)取最小值,一步得到所有像素位置的RGB最小值,代码更简洁。

验证示例

用你给出的Matlab测试数据验证:

import numpy as np

r = np.array([[10, 30, 23, 50, 27], [99, 21, 38, 44, 62], [90, 22, 64, 12, 56]])
g = np.array([[92, 74, 91, 37, 33], [14, 82, 44, 22, 49], [88, 10, 98, 74, 33]])
b = np.array([[73, 22, 94, 18, 34], [88, 37, 29, 12, 30], [79, 39, 48, 95, 24]])

result = np.minimum(np.minimum(r, g), b)
print(result)
# 输出与Matlab结果一致:
# [[10 22 23 18 27]
#  [14 21 29 12 30]
#  [79 10 48 12 24]]

内容的提问来源于stack exchange,提问作者KEZIA ANGELINE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:12:54