如何查询RGB图像的三维numpy数组中有多少个不同的RGB点,并打印具体数值?

简介: 如何查询RGB图像的三维numpy数组中有多少个不同的RGB点,并打印具体数值?

前言


想查看打印出分割图像的Mask里面有多少个不同的数值。



步骤


要查询一个三维 Numpy 数组(表示 RGB 图像)中的不同 RGB 点,并打印出它们,您可以遵循以下步骤:

  1. 展开 RGB 值:将三维数组转换为一维数组,以便对每个像素点的 RGB 值进行单独处理。
  2. 使用集合(set)去重:将展开后的 RGB值放入一个 Python 集合中,自动去除重复项。
  3. 打印不同 RGB 点:遍历集合,打印出每个不同的 RGB 点


具体代码


import numpy as np
# 假设您有一个三维 Numpy 数组,代表 RGB 图像
rgb_image = np.random.randint(0, 256, size=(height, width, 3), dtype=np.uint8)
# Step 1: 展开 RGB 值
flat_rgb_values = rgb_image.reshape(-1, 3)
# Step 2: 使用集合去重
unique_rgb_values = set(tuple(rgb) for rgb in flat_rgb_values)
# Step 3: 打印不同 RGB 点
for rgb in unique_rgb_values:
    print(f"{rgb}: ({rgb[0]}, {rgb[1]}, {rgb[2]})


打印结果:

(0, 0, 128), (0, 0, 0), (0, 128, 0), (0, 128, 128)


代码解释如下:


这段代码首先创建一个随机生成的 RGB 图像作为示例。接着,使用 reshape(-1, 3) 将三维数组展平为二维数组,每一行代表一个像素点的 RGB 值。然后,将这些 RGB 值转换为元组,并放入一个集合中进行去重。最后,遍历集合并打印出每个唯一的 RGB 点。


注意,这里使用 tuple(rgb) 将 Numpy 数组的每一行(即一个 RGB 值)转换为元组,因为集合要求元素可哈希,而 Numpy 数组本身不可哈希。此外,打印时使用 f-string 格式化输出,使得结果更易读。

相关文章
|
16天前
|
并行计算 数据处理 开发者
NumPy高效数组操作与性能调优手册
NumPy是Python数据科学的基础库,以其高效的数组操作著称。本文深入探讨了NumPy的数组基础,如创建和操作数组,并介绍了向量化运算、避免Python循环等高效技巧。此外,文章还提出了性能优化策略,包括使用内置函数、并行计算、减少数据类型转换、使用视图及有效管理内存,以帮助开发者在处理大规模数据时充分利用NumPy的性能优势。通过这些策略,可以实现更高效、快速的数据处理。【6月更文挑战第10天】
27 4
|
13天前
|
BI 测试技术 索引
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)-1
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)
|
10天前
|
Python
NumPy 是 Python 中的一个重要的科学计算包,其核心是一个强大的 N 维数组对象 Ndarray
【6月更文挑战第18天】NumPy的Ndarray是科学计算的核心,具有ndim(维度数)、shape(各维度大小)、size(元素总数)和dtype(数据类型)属性。方法包括T(转置)、ravel()(扁平化)、reshape()(改变形状)、astype()(转换数据类型)、sum()(求和)及mean()(计算平均值)。更多属性和方法如min/max等可在官方文档中探索。
31 5
|
6天前
|
机器学习/深度学习 C语言 索引
数组计算模块NumPy(一)
NumPy是Python科学计算的核心库,提供高性能的数组和矩阵操作,支持大量数学函数。它包括一维、二维到多维数组,并通过C实现,优化了计算速度。
数组计算模块NumPy(一)
|
10天前
|
Python
NumPy 是 Python 的一个强大的科学计算库,它允许你创建各种类型的数组
【6月更文挑战第18天】**NumPy**是Python的科学计算库,用于创建和操作多维数组。常用数组生成方法包括:`np.array()`从列表转换为数组;`np.zeros()`生成全零矩阵;`np.ones()`创建全一矩阵;`np.linspace()`产生等差序列;`np.arange()`创建等差数列;以及`np.eye()`生成对角线为1的二维数组。更多方法可查阅NumPy官方文档。
23 2
|
6天前
|
索引 Python
数组计算模块NumPy(二)
NumPy教程概要:介绍数组切片、二维数组索引、重塑、转置和数组操作。讨论了切片语法`[start:stop:step]`,二维数组的索引方式,以及reshape方法改变数组形状。涉及转置通过`.T`属性或`transpose()`函数实现,数组增加使用`hstack()`和`vstack()`,删除用`delete()`。还提到了矩阵运算,包括加减乘除,并展示了`numpy.dot()`和`@`运算符的使用。最后提到了排序函数`sort()`、`argsort()`和`lexsort()`,以及NumPy的统计分析函数如均值、标准差等。
|
13天前
|
存储 API C语言
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)-2
Python学习笔记之NumPy模块——超详细(安装、数组创建、正态分布、索引和切片、数组的复制、维度修改、拼接、分割...)
|
22天前
|
存储 数据处理 C语言
NumPy 通用函数(ufunc):高性能数组运算的利器
NumPy的通用函数(ufunc)提供高性能的逐元素运算,支持向量化操作和广播机制,能应用于数组的数学、逻辑和比较运算。ufunc可提高计算速度,避免低效的循环,并允许自定义函数以满足特定需求。例如,ufunc实现加法比循环更高效。通过`frompyfunc`可创建自定义ufunc。判断函数是否为ufunc,可检查其类型是否为`numpy.ufunc`。ufunc练习包括数组的平方、平方根、元素积及性能对比。
21 0
|
1月前
|
存储 机器学习/深度学习 数据处理
NumPy:从初识到实战,探索Python科学计算的无限可能
NumPy:从初识到实战,探索Python科学计算的无限可能
45 0
|
1月前
|
程序员 开发工具 索引
图解Python numpy基本操作
图解Python numpy基本操作