如何判断图像是否包含“手写签名”?

sc1013

我有一个被扫描为TIF格式(黑/白)的表格(在表格的右下角画有一条线)。

有些人可能会在表格上签名,有些人不会。那么,如何确定扫描的图像上是否包含签名?建议的任何算法或任何现有的框架或库都可以实现这一目标?

谢谢!

致命编码器

这是我过去用于检查签名的代码。假定图像的aBytes per pixel为3。

MAX_BLACK_VALUE数字来自像素颜色(255)的最大值乘以3(因为每个像素的字节数为3),然后减半。

该代码通过对签名图像中的像素数量求和,并通过MinPixelCount返回真值(即已检测到签名)来进行工作。否则它将返回false。

该代码还利用Lockbits一种方法来使图像处理更快,如果java具有类似的方法,只需确保始终UnlockBits按照我在finally语句中的调用进行调用

private const int MAX_BLACK_VALUE = 382; // ((255 * 3) / 2) rounded down

private bool CheckForSignature(string SignatureFile, int MinPixelCount)
{
    using (Bitmap bitmap = new Bitmap(SignatureFile))
    {
        int nBytesPerPixel = Bitmap.GetPixelFormatSize(bitmap.PixelFormat) / 8;
        System.Drawing.Imaging.BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bitmap.PixelFormat);
        try
        {
            byte[] baPixels = new byte[bitmapData.Stride * bitmap.Height];
            System.Runtime.InteropServices.Marshal.Copy(bitmapData.Scan0, baPixels, 0, baPixels.Length);

            int nBlackPixels = 0;
            for (int h = 0; h < bitmap.Height; h++)
            {
                int nCurrentLine = h * bitmapData.Stride;
                for (int w = 0; w < (bitmap.Width * nBytesPerPixel); w += nBytesPerPixel)
                {
                    int nBlue = baPixels[nCurrentLine + w];
                    int nGreen = baPixels[nCurrentLine + w + 1];
                    int nRed = baPixels[nCurrentLine + w + 2];

                    if (nBlue + nGreen + nRed <= MAX_BLACK_VALUE)
                    {
                        nBlackPixels++;
                        if (nBlackPixels >= MinPixelCount)
                            return true;
                    }
                }
            }
        }
        finally
        {
            bitmap.UnlockBits(bitmapData);
        }
    }

    return false;
}

ps我意识到这是一个java问题,但我只知道,C#但您应该可以将其转换。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在iOS应用中捕获用户的手写签名

来自分类Dev

绘制矩形边界的离线人手写签名

来自分类Dev

如何定义包含逗号的手写笔哈希值?

来自分类Dev

如何定义包含逗号的手写笔哈希值?

来自分类Dev

如何使用OpenCV和Python将手写文本与图像隔离?

来自分类Dev

如何在Python中锐化然后细化手写数字的图像?

来自分类Dev

手写动作

来自分类Dev

检查图像是否包含蓝色像素

来自分类Dev

手写笔渲染功能是否同步?

来自分类Dev

手写笔渲染功能是否同步?

来自分类Dev

Google Cloud Vision API 是否支持从具有梳状字段的 pdf/图像读取手写或输入文本

来自分类Dev

如何使用手写笔.define()颜色

来自分类Dev

如何计算手写笔的平方根

来自分类Dev

WordPress的。如何防止WordPress删除我的手写代码

来自分类Dev

如何在手写笔中扎根?

来自分类Dev

手写笔如何实现循环?

来自分类Dev

如何使用手写识别模型作为 API?

来自分类Dev

手写数字识别

来自分类Dev

CNTK手写识别

来自分类Dev

如何确定图像是否需要旋转

来自分类Dev

如何确定图像是否饱和?

来自分类Dev

如何查找图像是否存在-解析

来自分类Dev

如何确定图像是否超链接?

来自分类Dev

如何查找图像是否存在-解析

来自分类Dev

如何检测图像是否为灰度

来自分类Dev

如何知道图像是否仍然存在

来自分类Dev

Onenote API-页面内容可以包含手写内容吗?

来自分类Dev

Azure Computer Vision API中从本地存储的图像文件中的手写识别

来自分类Dev

是否可以使用javascript扩展手写笔?