python 三维矩阵中唯一值和找到矩阵中所有的不同颜色

# 二维, axis=0, 按行比较, [1, 0, 0]有两个,只返回一个
>>> a = np.array([[1, 0, 0], [1, 0, 0], [2, 3, 4]])
    >>> np.unique(a, axis=0)
    array([[1, 0, 0], [2, 3, 4]])


# 三维矩阵, 按通道比较,三个通道值算作一组,和其他组比较
np.unique(mask_label.reshape(-1, 3), axis=0)


# 按通道查询某个值,比如查询三维矩阵中某个颜色所在位置,并赋其他颜色
equality = np.equal(multi_object_mask, mask_bgr_color)
multi_object_mask[np.all(equality, axis=-1)] = [255, 0, 0]  # 赋蓝色

# np.unique(mask_label.reshape(-1, 3), axis=0) 图片大小(4096,1700), 需要3s 
# 下面的只需要0.003s
def find_colors(mask_label):
    gray_mask_label = cv2.cvtColor(mask_label, cv2.COLOR_BGR2GRAY)
    gray_mask_label[gray_mask_label > 0] = 255
    cnts, _ = cv2.findContours(gray_mask_label, mode=cv2.RETR_EXTERNAL, method=cv2.CHAIN_APPROX_SIMPLE)
    mask_color_list = []
    for cnt in cnts:
        M = cv2.moments(cnt)
        center_x = int(M["m10"] / M["m00"])
        center_y = int(M["m01"] / M["m00"])
        mask_color = mask_label[center_y, center_x]
        mask_color_list.append(mask_color)
    return mask_color_list

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值