本地以图搜图识图工具——嗅图狗!(python3.6实现图像比对指路,代码git)

2023-11-16

1.写在前面

因为之前做完后(当毕业设计做的)为了尽量实用打了个exe,结果好多人反应问题,索性直接把代码、更新exe的链接都写个博客放在这里(这么晚才放出源码就是怕毕设查重……)

 

全部项目源码git及说明https://github.com/naturalcaduceus/picSniffer

工程内有:完整功能版、exe版(为了打包不至于上百M)的python源码(见readme),大部分识图算法搜索自网络,用法可以参考(当初做的时候找到源码不会用才是最苦恼的TAT……)

 

打exe包时遇到的问题:  https://blog.csdn.net/sinat_27382047/article/details/81304065#comments

最初的demo:https://blog.csdn.net/sinat_27382047/article/details/80051091#comments

 

1.1打包的可用exe

现已单独开贴:https://blog.csdn.net/sinat_27382047/article/details/95879954

 

1.2界面截图

1.3功能

 

2.正文开始

本人热衷于搜集资源(老司机嘿嘿嘿……),常常看到某些贴吧上的图片然后存到电脑上,最后当想找的时候根本找不到QAQ……于是想法诞生于“画个草图就能在文件夹里找到想找到的图” (其实最后实现的并不理想),但是为了这个功能却实现了很多基础的特征搜索(主色调搜索、Dhash特征值……),于是这个软件就诞生了。

 

在网上找到的已有本地识图工具不是试用收费就是生成一大堆缓存不好用,下面列出我找到的本地识图工具

  1. 链图云:【吐槽:识图过程产生大量的缩略图占用空间而且识图缓慢。】
  2. 灵动搜图:即GiSeek。【吐槽:很多功能还必须是注册版才可使用。】
  3. yitusoutu/以图搜图:欣思软微制作的一款软件。【吐槽:打开显示“未找到超级狗”???搜了一下超级狗是加密用的,做的不怎么样还特么加密了?】
  4. Visual Similarity Duplicate Image Finder:主要目的是帮助用户在文件夹中查找相同或重复的图片文件。【吐槽:只能是找重复图片】
  5. Picasa3:它能搜索浏览自己的计算机的所有图片,整理照片等等功能。【吐槽,是个好用的图片浏览分类工具……】

 

其实……界面最开始才是让人烦恼的东西,想用C#试过IronPython(结果只支持py2.7),最后老老实实用python自带的tkinter库了(推荐B站“莫烦python”的视频)……

tkinter界面方面遇到问题写的一些博客:

如何在界面上显示图片,并且自动调整大小:https://blog.csdn.net/sinat_27382047/article/details/80138733

点击按钮改变显示的图片(多坑警告):https://blog.csdn.net/sinat_27382047/article/details/80142325

ttk Treeview控件的各种操作(清空操作是从stackoverflow上才找到的):https://blog.csdn.net/sinat_27382047/article/details/80161637

ttk.Combobox(网上多是qt的currentText()方法【坑】……ttk里没这个函数,于是我找到了ttk的函数手册,然后才解决……):https://blog.csdn.net/sinat_27382047/article/details/80188897

写了界面,调用识图算法不想写到一块一团乱,想出了可以已有调用的模式:https://blog.csdn.net/sinat_27382047/article/details/80214661

 

3.识图功能

在网上搜到的理论一大堆,识图算法的代码却零零散散,尤其是找到了算法还得明白人家写的怎么用……有的压根没有算法找,只能自己硬生生想……我下面放出所有我实现的功能有用的链接,给也想做图像相似比对的同学们一些方便(*^_^*)

3.1dhash特征值比对

感谢(这个链接让我实现了第一版demo!而且他的git也十分棒,好多算法都是借鉴他的):https://segmentfault.com/a/1190000004467183

3.2直方图比对

感谢:https://segmentfault.com/a/1190000004467183

3.3主色调比对

实用简单代码:https://blog.csdn.net/u010196573/article/details/16846173

太复杂了没用到……:https://blog.csdn.net/lhh31/article/details/52015500

3.4SIFT特征比对(实现小图找全图)

用上了opencv库内的sift特征函数。

感谢: opencv-python 提取sift特征并匹配

其他sift算法相关:

SIFT特征提取-应用篇

Sift算子特征点提取、描述及匹配全流程解析

SIFT特征匹配算法介绍——寻找图像特征点的原理

SIFT算法的个人理解

Sift与Surf的区别

SIFT特征详解

3.5人脸识别(我现在只是:框选人脸,再借助比对算法大致识别,不是特制的算法)

用到了opencv的heer特征

感谢(这个找的久,用起来也难……):https://www.cnblogs.com/panlangen/p/7896448.html

 

 

4.筛选、甄别功能

不用于图像比对的但是很用的到一些功能……

4.1图片查重(文件夹遍历)

根据那些算法就能实现一些批量功能了~

文件夹遍历方法总结:https://blog.csdn.net/sinat_27382047/article/details/80172708

4.2推荐文件夹内相似图片(tensorflow模型读图怎么用)

自己的血泪求源史T-T: https://blog.csdn.net/sinat_27382047/article/details/80534234

感谢:https://blog.csdn.net/White_Idiot/article/details/78816850

4.3色情图片识别

可直接用:https://blog.csdn.net/oxuzhenyi/article/details/55000520

4.4识别文字(Tesseract-OCR)

感谢:https://blog.csdn.net/qiushi_1990/article/details/78041375

 

 

5.总结

发现花了那么长时间(3个月)做完的东西,时间多用于搜索、筛选(找到简单能用易实现的、去除那些看起来很高大上但是自己用不起的理论……看了看自己的“毕设收藏夹”,有130+的收藏……有现成能用的代码的却不超过10个……)也走过徐徐多多的弯路(比如去尝试自己用2个星期时间训练出图片分类模型……)【成品所呈现的……真是冰山一角,有许许多多尝试过的不可行的东西呈现不出……】,还有繁琐的小功能,图片格式转换,使用根本没接触过的东西……,不过本来目标就是从完全不会的python写一个实用的程序(让我高兴的是,貌似真的有人需要这种工具,知乎上还私信我打不开的问题,让我有点欣慰。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

本地以图搜图识图工具——嗅图狗!(python3.6实现图像比对指路,代码git) 的相关文章

  • LU分解法

    LU分解的原理是将一个矩阵分解为一个下三角矩阵L和一个上三角矩阵U的乘积 下面是LU分解的原理 定一个n n的矩阵A 我们希望将它分解为下三角矩阵L和上三角矩阵U的乘积 即A LU 我们可以在矩阵A上进行列主元高斯消元 消元的过程中会用到矩
  • File "errorchecker.pyx", line 17, in OpenGL_accelerate.errorchecker._ErrorChecker.__init__ (src\erro

    先安装 pip install PyOpenGL 3 0 2 再安装 pip install PyOpenGL PyOpenGL accelerate 结果 这次只安装PyOpenGL accelerate 调用代码会报错 File err
  • uView的组件u-picker 选择器

    网址 https www uviewui com components picker html 需要的是数组中的数组 处理核心是将接口获取回来的数组 赋给一个空数组 然后把这空数组再push到一个空数组里面 this arr1 res da
  • docker的配置,基础用法

    什么是docker docker中的容器 lxc gt libcontainer gt runC OCI OCF OCI Open Container initiative 开放容器倡议 由Linux基金会主导于2015年6月创立 旨在围绕
  • 【Swift】LeedCode整数反转

    Swift LeedCode 拿硬币 由于各大平台的算法题的解法很少有Swift的版本 小编这边将会出个专辑为手撕LeetCode算法题 新手撕算法 请包涵 给你一个 32 位的有符号整数 x 返回将 x 中的数字部分反转后的结果 如果反转
  • 小程序分享及返回上级页面

    分享监听 用户点击右上角分享 onShareAppMessage function res console log res if res from menu return title 邀请赢好礼 path pages member memb
  • 【hadoop报错】(ssh)Connection timed out

    背景 在虚拟机上启动hadoop 报错 Starting namenodes on node1 huike cn Last login Thu Oct 14 22 36 08 EDT 2021 on pts 0 node1 huike cn
  • 为什么单线程的Redis那么快?

    1 Redis单线程的本质 其实 Redis并不是单线程 我们之所以会一直称Redis是单线程 这是因为Redis在处理客户端的读写请求时 只有一个主线程 而在处理以下这些操作时 Redis会fork出其他的子线程来处理 主从数据同步 切片
  • 多元统计分析与R语言练习

    多元考试练习 文章目录 多元考试练习 一 多元线性回归模型 1 建立回归模型 2 逐步筛选 3 最优标准方程 影响最大 4 全局择优法 使用4 2 1版本的R 5 分析 6 由标准化偏回归系数可见 方差分析结果 二 判别分析 1 线性判别
  • python学习心得总结

    21年7月8上午是我第一次接触python这个语言 对于python这个语言之前了解的也并不是很多 也可以说几乎为零 因为我们之前的学习也不考python 所以也没想过去主动学习它 然而当我听老师讲解的时候 首先我发现python这个语言相
  • 使用VS2005下自带的MSSQL 2005 EXPRESS

    VS2005安装后自带一个试用版的SQL2005 EXPRESS版 方便了开发时使用数据库 不用再安装一个sql 2005 怪占用资源的 如何使用 安装后 在开始菜单里出现个sql的菜单组 但是找不到sql server的控制台 习惯用sq
  • 《机器学习实战》——决策树

    本章介绍的决策树算法为ID3算法 Iterative Dichotomiser 3 迭代二叉树3代 主要流程为 根据信息增益找到划分数据的最佳特征 判断划分后每个数据子集是否为同一分类 若是 返回分类结果 若不是 再次划分数据子集 递归 同
  • iOS. Xcode11 dylib封装成framework 图文教程

    Frameworks 制作 Xcode 版本 1 framework是什么 framework是一个层级的目录结构 将一系列可共享的资源 比如动态共享库 nib文件 图形文件 本地化相关文件 头文件 以及相关引用文档 包装成一个包 pack
  • 输入PM2.5的值,判断空气质量

    一个简单的if语句 a int input 请输入PM2 5的值 if 0 lt a lt 35 print 优 elif 35 lt a lt 75 print 良 elif 75 lt a lt 115 print 轻度污染 elif
  • Linux下的文件名空格处理

    转载原文 https blog csdn net michaelzhou224 article details 12708333 解决空格问题的几种方案 1 使用 来替代一个含有空格的文件以及目录 jorncess red black 可以
  • Android开发-Android项目结构

    文章目录 前言 一 Gradle 1 1什么是Gradle 1 2Gradle是一个构建工具 那么为什么要用构建工具 二 项目结构 三 app目录结构 四 res目录结构 总结 前言 Android工程的项目结构比较复杂 在进行Androi
  • AWD简单介绍和搭建AWD平台

    AWD简单介绍和搭建AWD平台 何为AWD 比赛中每个队伍维护多台服务器 服务器中存在多个漏洞 利用漏洞攻击其他队伍可以进行得分 修复漏洞可以避免被其他队伍攻击失分 1 一般分配Web服务器 服务器 多数为Linux 某处存在flag 一般

随机推荐

  • KNN数据分类算法的matlab仿真

    目录 1 算法概述 2 仿真效果 3 MATLAB仿真源码 1 算法概述 KNN的本质是通过距离判断待测样本和已知样本是否相似 待测样本找到与已知样本中与其距离最近的K个样本 对这k个样本 它们大多数属于哪一类别 就把待测样本归为哪一类别
  • [工程编写]cmakelist多版本python环境编写

    问题 最近在写一个工程的时候需要用到python3 但是由于引入了ROS相关的环境 导致希望使用python3的那部分代码一直默认使用ROS中的python2 这样环境就不对了 解决的方法 很顺理成章的想法是为需要python3的那部分代码
  • 注解&反射学习笔记

    1 注解的作用域及使用方式 表示我们的注解可以使用在那些地方 Target value ElementType METHOD ElementType TYPE 表示注解在什么地方有效 RESOUT 源码 lt CLASS 类 lt RUNT
  • IntelliJ Idea 常用快捷键 超实用!

    IntelliJ Idea 常用快捷键 列表 实战终极总结 1 自动代码 常用的有fori sout psvm Tab即可生成循环 System out main方法等boilerplate样板代码 例如要输入for User user u
  • Pytorch如何保存训练好的模型

    0 为什么要保存和加载模型 用数据对模型进行训练后得到了比较理想的模型 但在实际应用的时候不可能每次都先进行训练然后再使用 所以就得先将之前训练好的模型保存下来 然后在需要用到的时候加载一下直接使用 模型的本质是一堆用某种结构存储起来的参数
  • docker 迁移 /var/lib/docker(解决 /var/lib/docker 占用大 / 根目录空间占满问题)

    迁移docker工作目录 目的 为了解决 var lib docker 占用大 var 分区空间不够问题 说明 由于centos7 4系统 系统默认根目录下面为50G空间 docker默认数据目录在 var lib docker中 所以 会
  • 云孚快写:自动生成多级目录,一键生成万字长文

    1 产品简介 云孚快写是云孚科技自主研发的一款智能写作产品 基于大模型技术打造 针对长文写作场景深度优化 可根据文章标题一键生成目录 再根据目录一键生成正文 文章字数无上限 可极大提升用户的长文写作效率 云孚快写以哈工大与云孚科技联合研发的
  • Hive的常用HiveQL操作

    文章目录 Hive的常用HiveQL操作 1 HiveQL概述 2 HiveQL操作命令 2 1 数据定义 2 1 1 创建 修改和删除数据库 2 1 2 创建 修改和删除表 2 1 3 视图 索引创建 修改和删除 2 1 4 用户自定义函
  • 【如何处理信息收集时子域名爆破泛解析的问题】

    如何处理信息收集时子域名爆破泛解析的问题 子域名泛解析的成因 泛域名解析举例 子域名爆破中解决泛解析的方式 推荐工具 子域名泛解析的成因 在子域名解析中 每个子域名都会解析为一个特定的IP地址 只有被设置解析 用户才能正常进行访问 一旦用户
  • 一种解决ChatGPT报错“Sorry, you have been blocked“的方法

    ChatGPT突然不能用 尝试了网上说的重启V某N 打开隐私模式等方法都不管用 采用下面方式 解决 1 打开浏览器的 设置 2 找到语言设置 3 将首选语言改成英语 搞定
  • OpenStack主要功能和作用

    OpenStack主要组件和作用 openstack是一个开源的云计算管理平台 由几个重要的组件结合起来完成工作 openstack支持所有类型的云环境 实施简单可以大规模扩展丰富标准统一的云计算管理平台 openstack通过各种互补的服
  • C++之模板<template>

    目录 前言 模板 1 泛型编程 2 函数模板 2 1 函数模板的概念 2 2 函数模板的格式 2 3 函数模板的原理 2 4 函数模板的实例化 2 5 模板参数的匹配原则 3 类模板 3 1 类模板的概念 3 2 类模板的格式 3 3 类模
  • Android进程间通信(IPC)机制Binder介绍

    转载自 http blog csdn net luoshengyang article details 6618363 在Android系统中 每一个应用程序都是由一些Activity和Service组成的 这些Activity和Servi
  • 2012-03-25 17:31 以太网中的UDP编程:udp分包问题

    1 在进行UDP编程的时候 我们最容易想到的问题就是 一次发送多少bytes好 当然 这个没有唯一答案 相对于不同的系统 不同的要求 其得到的答案是不一样的 我这里仅对 像ICQ一类的发送聊天消息的情况作分析 对于其他情况 你或许也能得到一
  • ffmpeg常用编解码命令

    ffmpeg常用编解码命令 1 ffplay exe 1 播放MP4文件 指定标题以及播放分辨率 ffplay exe window title 视频监控 x 720 y 576 i 2019 09 19 14 21 20 Ch7 mp4
  • 数组17--机器人的运动范围

    数组17 机器人的运动范围 jz66 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 地上有一个m行和n列的方格 一个机器人从坐标0 0的格子开始移动 每一次只能向左 右 上 下四个方向移动一格 但是不能进入行坐标和列坐标的数
  • Qt重绘之update,repaint详解

    Qt里面的重绘和Windows编程里面的重绘差不多 但是Qt的重绘更有特色 更加智能 在讲之前 先说说paintEvent paintEvent 是一个虚函数槽 slot 子类可以对父类的paintEvent进行重写 当调用update r
  • 【C51自学笔记】数码管(静态与动态显示)+74HC138+点阵的动态显示

    数码管 数码管由7个发光二极管组成一个日字形 如果需要显示小数点 那么就再加一个点 就是8段数码管 数码管显示亮度高 响应速度快 分共阴和共阳两种形式 常用的有单个的和 联的 还有两联的和专门用来显示时间的 分类 共阴 共阳 编码问题 必须
  • sqli-labs(34)

    0x01构造闭合 同样 发现 被注释掉了 试探了一波发现什么信息都不会返回 正确错误的页面都一样 之前我们的方法就是将过滤函数添加的 给吃掉 而get型的方式我们是以url形式提交的 因此数据会通过URLencode 如何将方法用在post
  • 本地以图搜图识图工具——嗅图狗!(python3.6实现图像比对指路,代码git)

    1 写在前面 因为之前做完后 当毕业设计做的 为了尽量实用打了个exe 结果好多人反应问题 索性直接把代码 更新exe的链接都写个博客放在这里 这么晚才放出源码就是怕毕设查重 全部项目源码git及说明 https github com na