首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP,检测带水印的图像?

PHP,检测带水印的图像?
EN

Stack Overflow用户
提问于 2013-03-11 21:29:07
回答 6查看 6.2K关注 0票数 10

我有一个大约有一百万张图片的图片库,其中大约一半的图片在同一地点打上了相同的、半透明的水印。

我从哪里开始,检测带有水印的图像?有没有一些标准的工具可以做到这一点?

EN

回答 6

Stack Overflow用户

发布于 2013-03-11 22:06:54

如果根据您的问题,您只想检测带水印的图像,您可以使用以下算法:

  • 提取水印图像的样本,逐像素扫描水印图像
  • ,并将第一个像素存储在一个数组中。逐个像素扫描每个
  • 图像并将其存储在数组中。每当正在扫描的图像中的行矩阵
  • 包含
  • 相同顺序的数组元素时,它最有可能是匹配的。

代码可能是这样的:

代码语言:javascript
运行
复制
$no_of_pixels = what_you_got;
$matched = 0;
$thumbpixels = array();
$wmark = imagecreatefrompng("watermark.png");
list($width, $height) =  getimagesize("watermark.png");
$tesimage = imagecreatefrompng("test.png");
for($h = 0; $h < $height; $h++){    
    for($w = 0; $w < $width; $w++){
        if(imagecolorsforindex($testimage, imagecolorat($testimage, $w, $h)) == $thumbpixels[0]){
            while($thumbpixels[$i++] === imagecolorsforindex($tesimage, imagecolorat($wmark, $w, $h)) && $no_of_pixels != $matched){
                $matched++;
            }
            if($matched == $no_of_pixels) echo "Voila, we found it!";
        }
    }
}

编辑

只是看看你的缩略图例子。如果您只想检测文本,可以尝试使用tesseract-ocrPhpOCR

您还可以考虑使用PHPSane

票数 4
EN

Stack Overflow用户

发布于 2013-03-11 21:47:00

检测图像中的几乎所有特征称为对象检测。有一个被广泛使用的图书馆,叫做OpenCV。它有一个非常简单的SDK,尽管设置起来很麻烦。它很好地支持C/C++和(几乎完全支持) Python。第一次开始使用OpenCV,我花了3周的时间来训练我自己的Classfier (training)

但我不会完全依赖这个解决方案,并考虑我的优先事项。此外,使用自定义分类器也很难达到良好的分类效果。其他方法更耗时。

票数 2
EN

Stack Overflow用户

发布于 2013-03-11 21:47:43

简而言之,不是完全准确的。

在最好的情况下,您只能对图像应用启发式,以查看它是否与精确的水印匹配,并获得置信度评级--例如,如果水印是50%的白色覆盖,则以白色为主的场景可能会给出假阳性,当然反之亦然。

如果图像使用有损压缩(如JPEG )作为边缘,也可能会出现问题,并且饱和度可能会导致水印不像预期的那样饱和,或者不像预期的那样精确定位。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15339864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档