一组图像中颜色(色调)值 (0-359) 出现次数的总和

2024-03-01

我有一个装满图像的文件夹,我想找到出现次数最少的色相值。为此,我为所有色调值创建一个长度为 360 的数组,获取文件夹中的所有图像,遍历它,对于每个像素,我在数组中代表色调值的索引处添加 +1。例如,如果我的像素中的色调值为 0,我会在数组中的索引 0 处添加 +1。 我的问题是:有没有更快或更有效的方法来做到这一点?

这是我的代码:

path = 'path'
sub_path = 'sub_path'
sumHueOcc = np.zeros((360, 1), dtype=np.uint64)

for item in dirs:
    fullpath = os.path.join(path,item)
    pathos = os.path.join(sub_path,item)
    if os.path.isfile(fullpath):
        f, e = os.path.splitext(pathos)
        img = np.array(Image.open(fullpath))
        img = np.float32(img)     
        imgHSV = cv2.cvtColor(img, cv2.COLOR_RGB2HSV_FULL) #RGB because numpy RGB

        # want to work with hue only
        h, s, v = cv2.split(imgHSV)

        # the hue values in one large array
        Z = np.array(h, copy=True)
        Z = Z.reshape((-1, 1))

        # convert to np.float32
        Z = np.uint64(Z)

        # count each appearence from hue values
        for z in Z:
            sumHueOcc[z] = sumHueOcc[z] + 1


max = np.argmax(sumHueOcc)
min = np.argmin(sumHueOcc)
print("Minimum 1")
print(min)
sumHueOcc[min] += max
min = np.argmin(sumHueOcc)
print("Minimum 2")
print(min)
sumHueOcc[min] += max
min = np.argmin(sumHueOcc)
print("Minimum 3")
print(min)
sumHueOcc[min] += max
min = np.argmin(sumHueOcc)
print("Minimum 4")
print(min)

我们可以用np.bincount进行计数。

因此,我们在开始时初始化输出数组int64 -

sumHueOcc_out = np.zeros((180, 1), dtype=np.int64) 

然后,在循环内部,我们替换涉及循环的最里面部分 -

# the hue values in one large array
Z = np.array(h, copy=True)
Z = Z.reshape((-1, 1))

# convert to np.float32
Z = np.uint64(Z)

# count each appearence from hue values
for z in Z:
    sumHueOcc[z] = sumHueOcc[z] + 1

with bincount选择 -

sumHueOcc_out.flat += np.bincount(h.astype(np.int64).ravel(),minlength=sumHueOcc.size)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一组图像中颜色(色调)值 (0-359) 出现次数的总和 的相关文章

随机推荐

  • 如何查看 gstreamer 调试输出?

    如何查看 GST CAT INFO GST DEBUG 等函数的输出 我是否需要自己使用调试级别设置来编译 gstreamer 还是可以在应用程序级别完成 可以使用 GST DEBUG 环境变量在 stderr 中打印调试消息 如果 gst
  • .NET:打开嵌入资源文件中的文件

    如何打开嵌入资源文件中的文件 例如硬盘上的文件 具有绝对路径 假设您有test xml文件嵌入到程序集中 你可以使用获取清单资源流 http msdn microsoft com en us library system reflectio
  • 如何在 OpenAPI (Swagger) 中定义枚举?

    有谁知道如何定义可能enumOpenAPI 2 0 定义中的值以便它们显示在 Swagger UI 的 模型 选项卡中 示例在这里 https petstore swagger io pet addPet有一个枚举选项status财产 如何
  • 阻止应用程序[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我需要制作一个应用程序来阻止手机上的
  • 我可以用 Python 编写屏幕截图吗

    是否有任何库可用于在 Python 中编写屏幕截图 可以做成跨平台的吗 可以捕捉到视频吗 如果可以实时进行吗 或者说可以直接 生成Flash电影 屏幕捕获可以通过以下方式完成PIL 得益于 ImageGrab 模块 http www pyt
  • Firebase 函数 - https onRequest“HTTP 错误:400,请求有错误”

    我的 firebase 功能遇到一些重大问题 我正在尝试创建一个https请求以便我可以将数据发送到 Firebase 我有一个超级简单的代码只是为了测试 它会导致错误 这是我的代码 这段代码应该没有问题 exports fetchPost
  • Symfony 表单,错误冒泡

    我遇到了表单错误冒泡的问题 我的表单中的一个字段定义如下 formBuilder gt add title text required gt true error bubbling gt false 我想向该字段添加一个这样的验证器 Ass
  • 如何在 Windows 10 预览版中安装应用程序请求路由 ARR 3.0?

    当我尝试安装应用程序请求路由时 出现错误 安装 Microsoft 应用程序请求路由 3 0 需要 IIS 版本 7 0 或更高版本 Windows 10有IIS 10 0 所以应该是可以的 但我猜微软还没有修复版本检查 有没有可用的解决方
  • 使用 Python BeautifulSoup 单击链接

    所以我是 Python 新手 我来自 PHP JavaScript 背景 但我只是想编写一个快速脚本来抓取网站和所有子页面以查找所有内容a标签有href属性 数一下有多少个 然后单击链接 我可以计算所有链接 但我不知道如何 单击 链接然后返
  • 识别python中的日期格式

    如何获取 python 中给定日期输入的日期格式 笔记 输入是由用户给出的 不是预定义的格式 他们可能会 给出任何类型的输入格式 下面的示例适用于 dd mm yyyy 格式 但这不在 我的情况 日期格式未预定义 datetime date
  • EditText 提示文本和图标

    我正在尝试创建一个带有提示的 EditText 作为图标和文本 但是提示文本位于中心 但我希望提示文本左对齐 以便提示图标和提示文本之间应该只有制表符空格 间隙 这是我尝试过的
  • Android:弃用 startManagingCursor 的原因是什么?

    弃用 startManagingCursor 的原因是什么 我的简单应用程序有一个表视图 其中包含数据库中的数据列表 所以 我现在在 onCreate 中拥有的内容 final Cursor cursor getDataFromDB sta
  • 使用密钥来同步对代码块的访问

    通常我会锁定如下所示的关键部分 public class Cache private Object lockObject new Object public Object getFromCache String key synchroniz
  • 发布后到看到我的第一个 Android 应用程序上市需要多长时间

    我已经在市场上发布了一个应用程序 检查了设备列表 国家 地区列出了一切正常 但仍然无法通过在市场中搜索看到我的应用程序 想知道在市场上被搜索到需要时间吗 比如 3 或 7 天 小时 Thanks 这将需要几个小时 具体多长时间取决于服务器负
  • 使用 GSON 创建 JSON 字符串

    我正在上一堂像下面这样的课 public class Student public int id public String name public int age 现在我想创建新的学生 while create new student S
  • Kotlin 协程 GlobalScope.launch 与 runBlocking

    这两种方法有什么区别吗 runBlocking launch coroutineDispatcher job GlobalScope launch coroutineDispatcher job runBlocking运行新的协程并中断地阻
  • pyenv: pip: 未找到命令

    我正在尝试让 Python 2 7 在 OSX El Capitan 上与 pyenv 和 virtualenv 很好地配合 我已经安装了pyenv使用 Homebrew 然后使用 Python 2 7 11pyenv install 2
  • Textblock 中的标签自动换行不起作用

    我有一个包含相当多对象的 WPF 页面 在所有这些项目的底部 我有一个标签 需要在内容中进行文字环绕 答案很简单 通过使用 Textblock 这应该是小菜一碟 然而 即使我使用了这些项目 我仍然无法让文本换行 所以我假设其他对象中必须有其
  • 使用集合对值进行排序

    使用集合进行排序很漂亮 对我来说比使用比较器要好得多 因为我有多个相同的值 并且我希望它们不要被扔进垃圾桶 但 Collections 有它自己的问题 它似乎认为 2 组的重复数量小于其实际较小的对应部分 示例有这些键和值 katy 1 m
  • 一组图像中颜色(色调)值 (0-359) 出现次数的总和

    我有一个装满图像的文件夹 我想找到出现次数最少的色相值 为此 我为所有色调值创建一个长度为 360 的数组 获取文件夹中的所有图像 遍历它 对于每个像素 我在数组中代表色调值的索引处添加 1 例如 如果我的像素中的色调值为 0 我会在数组中