python+opencv实现简单的图片搜索功能

原文地址
http://www.pyimagesearch.com/2014/12/01/complete-guide-building-image-search-engine-python-opencv/

一、图片搜索中的概念解释:
图片搜索引擎有三种不同的模式
1.Search by Meta-Data:元数据搜索模式,这种和传统的文字搜索类似,给索引数据添加文字注释,上传待查询的图片的时候,需要附加图片的文字描述,实际在后台搜索对应的文字描述,典型的有 https://www.flickr.com/
2.Search by Example:基于内容的搜索,即Content-Based Image Retrieval (CBIR) systems,也即后文介绍,通过计算图片内容相似度实现搜索,典型的如 https://www.tineye.com/
3.前两种的混合

二、分四个步骤实施CBIR图片搜索引擎
1.定义图片算子:即定义从图片中提特征的函数,原文中使用了色彩直方图作为图片的特征
2.简历索引数据库:用第一步中定义的提特征函数,遍历图片数据库,提取每张图片的函数,数据保存格式为 image_name ,image_vector
3.定义相似度函数:即计算从两张图片中提取的特征向量间的距离,原文中用的卡方距离
4.调用前三步写好的函数,实现一个查询入口

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 1、基于Python+yolo的机器学习应用,针对监控视频完成行人轨迹搜索项目源码+说明.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于Python+yolo的机器学习应用,针对监控视频完成行人轨迹搜索项目源码+说明.zip 基于Python的机器学习应用,针对监控视频完成行人轨迹搜索。通过一张目标图像,能自动从大量视频中搜索出包含目标的视频片段,并标记目标。 ## 运行环境 ``` Python 3.6.2 TensorFlow-GPU 1.6.0 opencv-python numpy 1.18.1 keras 2.2.0 scikit-learn pillow ``` 额外依赖项下载(模型文件上传到百度云,读者也可根据后续教程自己获得): ``` 文件名:yolo.h5 目标文件夹:search_from_videos\edg_code\model_data\ 链接:https://pan.baidu.com/s/1_oCYDz3Gpcn-WEr6qcqtsA 提取码:yimi 文件名:yolov3.weights 目标文件夹:search_from_videos\edg_code\ 链接:https://pan.baidu.com/s/1mNMwqp_R2-0G586hG9nmSA 提取码:zkvu ``` ## 适用平台 笔者在Windows 10上基于Visual Stdio Code开发,但并不代表此项目存在平台限制 ## 项目算法简述 预处理过程(edg_code),图见edg_algorithm_structure.png ``` 1. 基于三帧差分法,结合阈值法,对数据量庞大的监控视频文件进行预处理,去除其中的无意义部分(无行人出现),分割视频得到大量的视频片段。 2. 对每个视频片段基于YOLO算法,进行行人识别 [此处算法以及模型来源详见引用] 3. 结合YOLO和Deep Sort进行行人轨迹追踪 [此处算法以及模型来源详见引用] 4. 基于Caffe算法对行人人脸进行识别并评分,缓存评分较高的人脸(存在最大数量限制) 5. 基于EigenFace/LBPHFace, 对前面缓存的人脸建立模型文件 6. 将行人轨迹缓存结果与人脸模型文件关联,即预处理结果 ``` 搜索过程(client),图见client_algorithm_structure.png ``` 1. 对输入图片基于caffe算法截取人脸部分 2. 基于EigenFace/LBPHFace, 将目标人脸与预处理得到的人脸模型比对,得到置信度 3. 通过对置信度排序,并截取适当比例的结果,作为搜索结果输出 ``` ## 运行说明 #### code for edg(执行过程耗时) 下面的main.py统一指代为 search_from_videos/edg_code/main.py ``` # 将待处理的单个/多个视频文件(支持mp4)放入main.py中row_path指定的目录中 python main.py # 根据环境自动修正设置 # 程序将自动在main.py中video_path和save_path指定路径生成处理参数 ``` #### code for client(运行过程快速) 下面的main.py统一指代为 search_from_videos/client/main.py ``` # 在main.py中image_path指定待搜索的目标人物的照片 # main.py中的pre_dict和result_dict指向为edg_code生成的对应目录video_path和save_path python main.py # 根据环境自动修正设置 # 程序会自动在main.py中search_result_path指定路径生成搜索结果 ``` ## 修改方向 本项目仅为原型机,尚未提供可视化调用接口。可以考虑采用B/S架构,将其升级为真实可用的saas应用 ## 引用 ``` YOLO算法: Redmon J , Divvala S , Girshick R , et al. You Only Look Once: Unified, Real Time Object Detection[C].The IEEE Conference on Computer Vision and Pattern Recognition (CVPR).2016 ,01.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值