检测亮图像和暗图像

2024-01-09

我从 stackoverflow 答案中得到了这段代码来检测明亮和黑暗的图像

问题是它不起作用,我不知道为什么。

例如如果我打电话

IsDark(bitmap, 40, 0.9); // this always sees the image as bright

0.1 到 0.99 之间的任何值都会返回明亮的图像,任何高于 0.99 的其他值都会返回所有黑暗的图像。

即使设置为 1 到 250,容差值似乎也没有效果。

 // For fast access to pixels        
    public static unsafe byte[] BitmapToByteArray(Bitmap bitmap)
    {
        BitmapData bmd = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly,
                                         PixelFormat.Format32bppArgb);
        byte[] bytes = new byte[bmd.Height * bmd.Stride];
        byte* pnt = (byte*)bmd.Scan0;
        Marshal.Copy((IntPtr)pnt, bytes, 0, bmd.Height * bmd.Stride);
        bitmap.UnlockBits(bmd);
        return bytes;
    }

    public bool IsDark(Bitmap bitmap, byte tolerance, double darkProcent)
    {
        byte[] bytes = BitmapToByteArray(bitmap);
        int count = 0, all = bitmap.Width * bitmap.Height;
        for (int i = 0; i < bytes.Length; i += 4)
        {
            byte r = bytes[i + 2], g = bytes[i + 1], b = bytes[i];
            byte brightness = (byte)Math.Round((0.299 * r + 0.5876 * g + 0.114 * b));
            if (brightness <= tolerance)
                count++;
        }
        return (1d * count / all) <= darkProcent;
    }

好的,再次查看后,我注意到函数末尾的比较是向后看的(基于变量“darkProcent”的名称)。我认为比较运算符应该是>=,而不是

这让我得到了我对测试图像所期待的答案。

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

检测亮图像和暗图像 的相关文章

随机推荐

  • C# UTF8 输出保持编码字符完整

    我有一个非常简单的问题 我似乎无法理解 我有一个正确编码的 UTF8 String 我使用 Json NET 解析为 JObject 摆弄一些值并将其写入命令行 保持编码字符完整 除了保持编码字符完整之外 一切都很好 Code var js
  • Ajax 将“Map”对象传递给 Spring MVC 控制器

    Spring MVC 似乎不知道如何将 javascript 地图 映射到 Java 地图对象 在 Web UI 中 例如 foo jsp
  • Selenium 未填写表单上的密码属性

    我有一个非常简单的硒脚本来尝试调试我遇到的问题 我所做的就是填写用户名 然后填写密码 然后检查我输入的密码是否在密码字段中 我这样做的原因是我无法让它进行一般身份验证 当密码正确时始终会出现 密码不正确问题 表单 html
  • ec2:RunInstances 的最低 IAM 策略

    我正在尝试缩小运行预定义机器映像的最小策略范围 该映像基于两个快照 我只想启动 m1 medium 实例类型 在此基础上并在以下方面的帮助下这一页 http docs aws amazon com AWSEC2 latest APIRefe
  • 为 ng-bootstrap modal (NgbModal) 编写单元测试 [Angular 6]

    我在为应用程序中的确认模式编写单元测试时遇到一些问题 这是我想测试的一段代码 confirmModal prompt Are you sure title Confirm Observable
  • 硬盘读取性能问题

    我有一个 C 程序 它从硬盘读取文件并对文件中的数据进行一些处理 我正在使用标准 Win32 API 来读取文件 我的问题是这个程序有时速度非常快 然后突然减慢到之前速度的 1 6 如果我在多次运行中一次又一次地读取相同的文件 那么通常第一
  • Azure Function V3 无法加载文件或程序集“Microsoft.Extensions.DependencyModel,版本=3.1.6.0”

    我们尝试使用 DependencyContext Default RuntimeLibraries 来获取所有项目程序集并将我们想要的类型加载到 ServiceCollection 中 此代码在 asp net core Web 应用程序上
  • 如何在 Unix 中交换文件名?

    有什么方法可以在不使用临时变量的情况下快速完成此操作 有内置函数吗 编辑 谢谢你们的回答 看起来我需要澄清我的问题 但在大多数情况下 你们假设是正确的 有两个文件 并且文件名是相反的 文件 A 的名称为 B name file 文件 B 的
  • 如何从另一个应用程序访问字符串资源

    我有一个应用程序 A 和 B 应用程序 假设我在应用程序 A 中有一个字符串资源 lt string name abc gt ABCDEF lt string gt 如何从 B 中的活动访问 abc 的值 我尝试了以下方法 try Pack
  • 在 C# 中异步处理项目队列

    我正在尝试创建一个处理工作队列的系统 该系统具有以下规格 该系统有两个组件 工作分配器和工作人员 同时运行的worker数量有一个设定的上限 该上限大于一 为了避免同一任务被执行两次的问题 只有一个工作分配者 您会使用什么设计来创建这样的系
  • Windows 上 Sublime Text 2 的键盘列选择

    我一直在尝试通过 Windows 上的键盘绑定来选择列 The 默认 Windows sublime 键盘映射说 keys ctrl alt up command select lines args forward false keys c
  • 为什么 IEnumerable 会丢失更新的数据?

    你能向我解释一下为什么执行以下代码后Selected属性未更新为true The ListItem使用的类型来自System Web UI WebControls命名空间并且是一个类 不是结构 我相信FirstOrDefault函数返回对实
  • Android:以编程方式将 apk 复制到 /system/app

    我正在尝试从我的 java 代码安装系统应用程序 但到目前为止 我还没有取得任何成功 以下是我到目前为止所做的 我的设备已植根 我的 安装程序 应用程序作为系统应用程序安装 手动将其复制到 system app 我已经使用平台密钥签署了安装
  • mediaelement.js - RTMP 支持音频流?

    目前是否支持使用本机 HTML5 或 Flash 回退与 MediaElement 通过 RTMP 流式传输音频 我看到视频标签 data mejsoptions 属性中使用 flashStreamer 选项看起来像是对视频的支持 我知道你
  • 使用 Mockito-core 创建最终类的模拟?

    I 在github上找到 https github com relayr android sdk blob master tests src androidTest java io relayr ble service OnBoarding
  • GWT - 具有简单寻呼机问题的单元格

    单元格表分页行为异常 检查 GWT 的示例http gwt google com samples Showcase Showcase html CwCellTable http gwt google com samples Showcase
  • 如何在表单寄存器中添加一些文本字段(laravel 生成器 infyom)?

    我在这里阅读了教程 http labs infyom com laravelgenerator docs 5 3 installation http labs infyom com laravelgenerator docs 5 3 ins
  • 为什么视频观看速度这么慢?

    我在我的应用程序中放置了一个视频视图 它工作正常 但是当您打开页面时 它需要永远加载 缓冲 无论如何我可以解决这个问题吗 我的意思是这是一个3秒视频 加载时间应该不会太长 正确的 code package jslsoftware co nr
  • 是否可以为命名类型/结构定义相等性?

    读完一篇后相关问题 https stackoverflow com questions 20297503 slice as a key in map关于在映射中使用切片 我对 Go 中的相等性感到好奇 我知道可以覆盖equalsJava 的
  • 检测亮图像和暗图像

    我从 stackoverflow 答案中得到了这段代码来检测明亮和黑暗的图像 问题是它不起作用 我不知道为什么 例如如果我打电话 IsDark bitmap 40 0 9 this always sees the image as brig