Skip to main content

check the image contains the specified image template and set to cover it up

Project description

这是做什么的?

这是一个图像模板识别替换工具,根据提供的模板识别目标图像是否包含指定的logo或水印(或其他的图像模式), 可设置自动完成替换或渐变填充并保存或返回图像二进制流

怎么安装?

pip install imrepltool

怎么使用

导入并实例化:

from imrepltool.imrepltool import ImreplTool

IT = ImreplTool(cover_up=False,
                cover_with_img=False,
                cover_color=None,
                log_level=None,
                optimize_t_sequence=True)

在实例化时有数个选项可提供设置:

cover_up                为bool值,设置是否覆盖图像被匹配的地方,设置后对于处理速度有一定影响
cover_with_img          为bool值,设置是否使用您自己的logo或水印来覆盖被匹配的区域;
cover_color             为颜色rgb值(列表: [0, 156, 255]), 注意,当 cover_with_img 为True 时此项无效;
log_level               为日志级别,需要使用python 内置logging 包进行设置,例如: logging.ERROR, 默认是 logging.INFO 级别
optimize_t_sequence     为bool值, 设置是否在程序退出前对模板数据库排列进行优化,以提升下次运行速度

若您只是想检查目标图像是否包含已知模板,则不需要设置以上选项,直接默认实例化即可:

IT = ImreplTool()

在第一次安装使用时,您需要导入模板数据:

template_paths = [
    ['SJZG', 'templates/shijuezhongguo_template_1.jpg', 81],    # 这样的格式是必须的
    ['SJZG', 'templates/shijuezhongguo_template_4.jpg', 0],
]

IT.add_templates(templates=template_paths, update_if_existed=False) # update_if_existed 若已存在则更新

template_paths 需要一个二维列表, 内部的每一条即为一个模板记录,每条记录需要三个数据:

0: 模板名称(即上面的 SJZG 对应的位置)
1: 模板位置,可以是本地相对路径或绝对路径,也可以是图片网址(即上面的 .jpg 对应的位置)
2: 模板阈值,在匹配模板时阈值越高越精确,但也可能导致匹配不上,若不确定多少值,则设置为 0 即可(即上面的 81 对应的位置)

若在初始化时设置了 cover_with_img=True,则还需要导入替换 logo 的信息:

replacements = [
    ['SJZG', 'replacement/611_logo.png'],
]

IT.add_replace_img(repl_paths=replacements)

与 template_paths 一样,需要一个二维列表, 但是每条记录只需要两个数据:

0: logo对应的模板名称,即您希望此logo替换哪一个模板,注意此名称需要和 template_paths 的模板名称一致
1: logo位置,可以是本地相对路径或绝对路径,也可以是图片网址

图像数据输入完毕,接下来进行初始化就可以使用了:

IT.initialize_data(template_names='SJZG')

初始化时可以指明使用哪一个模板进行识别,即 template_names,若有多个模板需要使用,则使用列表将模板名称包装起来:

IT.initialize_data(template_names=['SJZG', 'other1', 'other2', ...])

若您需要对图像有选择性的覆盖,则在设置了 cover_with_img=True 和导入替换logo信息后,还可以设置:

IT.COVER_TEMPLATES = ['SJZG']

即可指明程序覆盖哪一类模板,若不设置则自动覆盖所有匹配到的模板

接下来可以正式使用匹配程序了:

image = 'images/shijuezhongguo_1.jpg'
# image = 'http://chuantu.xyz/t6/702/1565924123x2890171859.jpg'  # 或者图片的网址
check_result = IT.check(image)

需要注意的是,check 函数只接收单个图像地址, 若需要处理多张图片,请在初始化后使用循环条件调用 check

返回的 check_result 如下:

{'SJZG': True}
# {'SJZG': False}   # 若匹配不上则为 False

此外若有需要,您还可以使用 score = IT.FINAL_SCORE 来查看对应的匹配分数,score的值为:

{'SJZG': 0.9999}

如果您想检查图像覆盖情况,则可以使用:

IT.show()

将显示处理后的图像,但是需要注意的是,若您有多个图像在循环处理,您需要手动关闭显示的图像才能继续运行,每次显示一张图片

然后您可以保存处理后的图像:

save_result = IT.save('replaced_image.jpg')

如果您给定了保存地址,则保存成功后 save_result 的值为 True(保存失败则返回 False ),

若没有给定保存地址,则 save_result 的值为处理后的图像的二进制流,您可以使用其他工具将其保存或者上传到网站

到此程序流程完成

其他选项

其他的图像覆盖设置为可选项,若您有兴趣,或者发现覆盖效果不理想的时候,可以尝试调整这些选项查看效果

IT.EP_METHOD = False                # encircling picking method 是否启用三点包围取点法, False 则启用直线取点法
IT.EP_DISTANCE = 3                  # 三点包围取点法的像素取点距离
IT.SP_PIX = 3                       # straight picking method 直线取点法的像素取点数
IT.BORDER_EXTEND = 8                # 匹配边界的覆盖扩展像素数
IT.KEEP_COVER_IMG_SCALE = True      # 填充logo是否保持原比例
IT.CONCENTRATION = 100              # 填充透明度(尚不完善)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

imrepltool-0.1.5.tar.gz (16.1 kB view hashes)

Uploaded Source

Built Distribution

imrepltool-0.1.5-py3-none-any.whl (16.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page