首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在其他问题中提到的代码中使用phash算法?

在其他问题中提到的代码中使用phash算法?
EN

Stack Overflow用户
提问于 2022-09-13 08:03:32
回答 1查看 47关注 0票数 0

在Python中哈希图像的缓慢性能

你好,我的问题就是上面提到的问题。

我试着用感知散列来比较图片--我非常感兴趣地想要提高性能。我刚开始实验phash算法。

在上面提到的问题中,代码中使用了“d散列”。但在文本中提到了"phash“。

是否有可能将上述问题中使用的提高性能的思想仅仅应用于phash算法?

是否可以使用该代码进行感性散列,并将"dhash“一词改为”phash“?

非常感谢你的帮助!

约尔格

EN

回答 1

Stack Overflow用户

发布于 2022-09-26 12:21:51

Phash通常是一个比d散列慢的算法,但是有一个非常快速的开源phash实现:图片:PHash。唯一的问题是它是用Perl编写的。那么,重要的部分是在C中,所以它可以很容易地移植到python模块,但是必须有人去做。如果您不介意使用Perl,则可以直接使用它,例如处理链接到的帖子中随机生成的图像的结果:

代码语言:javascript
复制
parallel magick -size 640x480 xc: +noise random {}.jpg ::: {1..1000}

你会做这样的事情:

代码语言:javascript
复制
use Image::PHash;

for (1..1000) {
    my $iph = Image::PHash->new("$_.jpg", "Imlib2");
    my $p = $iph->pHash();
    print "$_ $p\n";
}

这使用了模块支持的最快的映像库(需要安装Imlib2图片:Imlib2 2 )。正如您对python所做的那样,您可以很容易地将其并行化,因此下面的M1 Mini只需1.3s就可以处理这1000个映像(单个线程上的vs 5.8s ):

代码语言:javascript
复制
use Image::PHash;
use MCE::Loop;

MCE::Loop::init {
    max_workers => 8,
    chunk_size  => 'auto'
};

mce_loop {
    my ($mce, $chunk_ref, $chunk_id) = @_;
    for (@{$chunk_ref}) {
        my $iph = Image::PHash->new("$_.jpg", "Imlib2");
        my $p = $iph->pHash();
        print "$_ $p\n";
    }
} (1..1000);

所以,它不是比d散列慢,而是更快一些。

很抱歉对python没有提供更多的帮助。

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

https://stackoverflow.com/questions/73699487

复制
相关文章

相似问题

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