OpenCV(Open Source Computer Vision Library)的计算效率很高且能够完成实时任务。OpenCV库由优化的C/C++代码编写而成,能够充分发挥多核处理和硬件加速的优势。OpenCV有大量技术社区和超过900万的下载量,它的使用范围极为广泛,如人机互动、资源检查、拼接地图等。

0.Python+OpenCV实现图像搜索引擎

之前看到谷歌和百度出了图像搜索引擎,查阅了相关资料深入了解了图像搜索引擎的算法原理。一部分参考了用Python和OpenCV创建一个图片搜索引擎的完整指南。决定自己实现一个简单的图像搜索引擎,也可以让自己更快地查找mac中的图片。为什么使用OpenCV+Python实现图像搜索引擎呢?

  • 首先,OpenCV是一个开源的计算机视觉处理库,在计算机视觉、图像处理和模式识别中有广泛的应用。接口安全易用,而且跨平台做的相当不错,是一个不可多得的计算机图像及视觉处理库。

  • 其次,Python的语法更加易用,贴近自然语言,极为灵活。虽然计算效率并不高,但快速开发上它远胜于C++或其他语言,引入pysco能够优化python代码中的循环,一定程度上缩小与C/C++在计算上的差距。而且图像处理中需要大量的矩阵计算,引入numpy做矩阵运算能够降低编程的冗杂度,更多地把精力放在匹配的逻辑上,而非计算的细枝末节。

1. 图像搜索原理

图像搜索算法基本可以分为如下步骤:

  • 提取图像特征。如采用SIFT、指纹算法函数、哈希函数、bundling features算法等。当然如知乎中所言,也可以针对特定的图像集群采用特定的模式设计算法,从而提高匹配的精度。如已知所有图像的中间部分在颜色空间或构图上有显著的区别,就可以加强对中间部分的分析,从而更加高效地提取图像特征。

  • 图像特征的存储。一般将图像特征量化为数据存放于索引表中,并存储在外部存储介质中,搜索图片时仅搜索索引表中的图像特征,按匹配程度从高到低查找类似图像。对于图像尺寸分辩率不同的情况可以采用降低采样或归一化方法。

  • 相似度匹配。如存储的是特征向量,则比较特征向量之间的加权后的平方距离。如存储的是散列码,则比较Hamming距离。初筛后,还可以进一步筛选最佳图像集。

2. 图片搜索引擎算法及框架设计

基本步骤

  • 采用颜色空间特征提取器和构图空间特征提取器提取图像特征。
  • 图像索引表构建驱动程序生成待搜索图像库的图像特征索引表。
  • 图像搜索引擎驱动程序执行搜索命令,生成原图图像特征并传入图片搜索匹配器。
  • 图片搜索匹配内核执行搜索匹配任务。返回前limit个最佳匹配图像
  • (具体代码来自如下网址:https://blog.csdn.net/coderhuhy/article/details/46575667)
  • 以上内容均转自上述网址

OpenCV实现图片搜索引擎相关推荐

  1. 用Python和OpenCV创建一个图片搜索引擎的完整指南

    无论你是将个人照片贴标签并分类,或是在公司的网站上搜索一堆照片,还是在为下一篇博客寻找合适的图片.在用文本和关键字来描述图片是非常痛苦的事. 我就遇到了这样的痛苦的事情,上周二我打开了一个很老的家庭相 ...

  2. 创建一个图片搜索引擎的完整指南

    大家都知道,通过文本或标签来搜索图片的体验非常糟糕. 无论你是将个人照片贴标签并分类,或是在公司的网站上搜索一堆照片,还是在为下一篇博客寻找合适的图片.在用文本和关键字来描述图片是非常痛苦的事. 我就 ...

  3. python图片旋转脚本_Python+OpenCV 实现图片无损旋转90°且无黑边

    0. 引言 有如上一张图片,在以往的图像旋转处理中,往往得到如图所示的图片. 然而,在进行一些其他图像处理或者图像展示时,黑边带来了一些不便.本文解决图片旋转后出现黑边的问题,实现了图片尺寸不变的旋转 ...

  4. python opencv调节图片亮度与对比度

    python opencv调节图片亮度与对比度 亮度调整是将图像像素的强度整体变大/变小,对比度调整指的是图像暗处变得更暗,亮出变得更亮,从而拓宽某个区域内的显示精度. 创建两个滑动条分别调整对比度和 ...

  5. python opencv 得到图片路径image_path的宽wide、高heigh和深度deep

    python opencv 得到图片路径image_path的宽wide.高heigh和深度deep 图片路径是:'1.jpg' 下面是具体代码: import cv2 #得到图片路径image_pa ...

  6. OPENCV打开图片进行边缘检测

    OPENCV打开图片并且进行边缘检测 #ifdef _CH_ #pragma package <opencv> #endif#ifndef _EiC #include "cv.h ...

  7. opencv去除图片的高光

    opencv去除图片的高光 有明显的修补痕迹 https://blog.csdn.net/qq_43555843/article/details/102510425 参考这个: https://blo ...

  8. Giphy – 分享一个很棒的 GIF 动画图片搜索引擎

    GIF 动画图片是一种非常有趣的图片格式,比静态图片更能够表达出含义,如果能制作得有创意,那就非常的有趣.今天向大家推荐一个很棒的 GIF 动画图片搜索引擎--Giphy. 您可能感兴趣的相关文章 轻 ...

  9. DALSA线阵CCD相机开发 之 opencv读取图片

    SDK的下载 Sapera_LT_8.31_SDK 百度网盘下载地址:链接:密码:ckm7. SDK的安装 解压运行.exe文件,按照提示确定,下一步即可. 帮助文档和demo 如果要获得完整的帮助文 ...

最新文章

  1. golang中的执行规则
  2. 1002:输出第二个整数
  3. hive一次加载多个文件_0738-6.2.0-如何在Hive中使用多分隔符
  4. WebSen!NT的行业分类说明
  5. python并发处理list数据_3种方式实现python多线程并发处理
  6. 诺基亚正式收购阿朗:物联网时代再出发
  7. 计算机网络成绩分析单,【计算机网络论文】计算机网络技术课程教考分离解析(共2033字)...
  8. 【LeetCode】【字符串】题号:*434. 字符串中的单词数
  9. eclipse部署Javaweb项目
  10. Windows XP无线零配置服务
  11. 谷歌浏览器截取长图 (不用安装插件)
  12. excepted one 0f #, =>at line16,column 16(byte 311)
  13. Qt编写的知名的开源软件汇总
  14. IBM 2005-B16 SAN光纤交换机学习笔记
  15. 分组交换(Packet Switching)和线路交换(Circuit Switching)
  16. 阿沐帮大家总结了自动化基本操作——selenium_常见技巧
  17. 基于XQ6657Z35-EVM开发平台上TI TMS320C6657 TLV320AIC3206音频设计
  18. python中常见的错误提示_python常见异常提示
  19. kms不是盗版,不了解kms的管理员请看下微软官方链接,解决”运行microsoft windows非核心版本的计算机上”的问题(kms不等于盗版)
  20. c语言实现图片缩放,图片缩放与合并(C语言实现)

热门文章

  1. unity ios 下载图片并将图片保存至相册
  2. 开始使用linggle
  3. 【实时渲染】RTR4 简要问答版
  4. 安装SecureCRT和SecureFX踩过得坑
  5. 怎么做自媒体?从这几步做起
  6. CentOS 7使用samba共享文件夹
  7. 【IDEA】如何用IDEA测试接口
  8. 如何从零自学成为前端工程师,怎么学习?怎么选老师?
  9. libevent库bufferevent事件实现socket通信
  10. 【二分查找详解外加递归写法】附有全部代码