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特征值……),于是这个软件就诞生了。
在网上找到的已有本地识图工具不是试用收费就是生成一大堆缓存不好用,下面列出我找到的本地识图工具
- 链图云:【吐槽:识图过程产生大量的缩略图占用空间而且识图缓慢。】
- 灵动搜图:即GiSeek。【吐槽:很多功能还必须是注册版才可使用。】
- yitusoutu/以图搜图:欣思软微制作的一款软件。【吐槽:打开显示“未找到超级狗”???搜了一下超级狗是加密用的,做的不怎么样还特么加密了?】
- Visual Similarity Duplicate Image Finder:主要目的是帮助用户在文件夹中查找相同或重复的图片文件。【吐槽:只能是找重复图片】
- 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写一个实用的程序(让我高兴的是,貌似真的有人需要这种工具,知乎上还私信我打不开的问题,让我有点欣慰。)