快速查找视觉上相似的图像

libpuzzle的Python项目详细描述


为python实现libpuzzle

它的目的是快速找到视觉上相似的图像(gif,png,jpg),甚至 如果它们已调整大小、重新压缩、重新着色或稍加修改。

示例应用程序:

  • 在照片库中查找重复图像
  • 图像分类
  • 图像搜索服务
  • 中庸(用户在论坛、维基、博客等上发送的图片)。图片 类似于之前被禁止的其他图片 主持人。

库依赖于gd库来加载位图图片。

在Debian服务器上,安装将是:

$ apt -y install libpuzzle-dev libgd2-xpm-dev
$ pip install libpuzzle

用法:

from libpuzzle import Puzzle, SIMILARITY_THRESHOLD

puzzle = Puzzle()
sign1 = puzzle.from_filename('img1.jpg')
sign2 = puzzle.from_filename('img2.png')
distance = sign1.distance(sign2)
if distance <= SIMILARITY_THRESHOLD:
    print('images are propably the same')

API:

SIMILARITY_THRESHOLD
SIMILARITY_HIGH_THRESHOLD
SIMILARITY_LOW_THRESHOLD
SIMILARITY_LOWER_THRESHOLD

class Puzzle:

    max_width  #

    max_height  #

    lambdas  #

    noise_cutoff  #

    p_ratio  #

    contrast_barrier_for_cropping  #

    max_cropping_ratio  #

    autocrop  #

    from_filename(filename) -> Signature
        # hydrate Signature from filename

    from_signature(sign) -> Signature
        # hydrate Signature from value

    from_compressed_signature(sign) -> Signature
        # hydrate Signature from compressed value


class Signature:
    # Implements signature

    value  # the value
    compressed  # the compressed value

    distance(signature) -> float
        # distance between 2 signatures


exception PuzzleError:
    # Raise when something went wrong

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在java中模拟按键?   尽管元素存在,但HtmlUnit中的java ElementNotFoundException   在Java中,长双精度并发写入不是原子的吗?   java如何在另一个对象数组中打印对象的int值?   java在显示或更改视图后执行一些代码   java JFR:读取时发生OutOfMemoryError。jfr文件   java Android助手检查是否购买   java这种设计模式的好处是什么?   Weblogic 10.3中针对托管服务器的java部署问题   java如何获取字符串。在编译时投诉的格式   声明字符串数组时发生java错误   java JPA在多个并行线程中从表中删除时发生死锁   java Android:在按钮动画之后启动活动   java并发与JMS主题在春季   使用Lucene spatial search/DateRangePrefixTree进行java日期范围查询?   java可选接口问题   JavaDbUnit没有在每个方法之后清洗和插入数据库,所以测试不是独立的   java在IAIK PKCS11包装器中一对私钥和证书如何匹配?