浏览网页的时候发现一篇不错的文章"用Python和OpenCV创建一个图片搜索引擎的完整指南"http://python.jobbole.com/80860/.作者在浏览自己旅游的照片的时候,发现照片太多了分类不过来,一时技痒写了个分类软件,虽然简单但是有用。关键的是我发现他在原文中使用了半个小时就写出来了。
       蛮快的嘛,我想。那么我要用多长时间写出来了,毕竟对于CBIR也是研究过的。
       那么立即来做,首先我要找到是图片。我没有那么多旅游图片(汗),但是别人的照片也是可以一样用的。找到了之前专门用于测试CBIR的图片集,大概是这个样子

        就是各种奇奇怪怪的照片。然后搭建opencv的基本框架。我们python用的不熟,但是c++下面自己是有类库的,所以用起来也不是很复杂
       首先是读入所有的图片:
;
    ){
           );
        _findclose(hFile);
    }
}
;i);i){
               pair<Mat,string> apir;
               apir.first = tmp;
               apir.second = fileNames[i];
               files.push_back(apir);
        }
    }
}
然后是编写hsv距离,这个参考以前的资料
;  ;
    ,    };
    ,    };
    ,    };
    ,  channels,  Mat(),  hist_base,  ,  histSize,  ranges,  ,  ,  NORM_MINMAX,  ,  Mat()  );
    calcHist(  ,  channels,  Mat(),  hist_test1,  ,  histSize,  ranges,  ,  ,  NORM_MINMAX,  ,  Mat()  );
      );
    return base_test1;
}
封装成函数。这个函数比原文中作者提出的方法要简单,我偷懒了。
然后就是要编写主函数程序,这个比较麻烦的地方就是要比较出最前面的10 个图片 。我采用比较笨的方法,赶时间嘛:
;
    ;
    
    ;i)
            tmp ;];
        sprintf_s(cbuf,;index;index;i];
        sprintf_s(cbuf,;;
        imax ;
    }
    printf(;
}
 
前后花了40-50分钟时间,最后的效果不如作者的效果。主要差距在核心算法上面。看来日常的算法总结重构的确很有价值。
这篇文章先写到这里,最近事多,等到闲下来再进行重构。欢迎大家批评指正。
 

最新文章

  1. maven 下载 源码和javadoc 命令
  2. 【linux】学习7
  3. TCP/IP基础知识
  4. 获取滚动条ScrollBar宽度
  5. Echarts - js
  6. 【JS】Intermediate3:AJAX
  7. c语言数组初始化问题
  8. 配置Tomcat出现Unsupported major.minor version 51.0
  9. MAC下pyenv和pyenv-virtualenv插件初探
  10. linux上搭建ftp
  11. 常用Linux操作命令
  12. hdu3081 Marriage Match II
  13. enable_shared_from_this类的作用和实现
  14. 八皇后问题(C#)
  15. Unit 3.标签的分类和嵌套规则
  16. 数据挖掘(二)——Knn算法的java实现
  17. angular的异步处理$q的使用(promise)
  18. 新手必看ES6基础
  19. Oracle根据表的大小排序SQL语句
  20. 【Mac】使用PicGIF制作gif动态图片

热门文章

  1. HTML语言的一些元素(三)
  2. HTML语言的一些元素(一)
  3. PostgreSQL中initdb做了什么
  4. zjuoj 3609 Modular Inverse
  5. Java: xml转换
  6. UML: 对象图
  7. springday04-go2
  8. Android 沉浸式状态栏
  9. 使用console进行 性能测试 和 计算代码运行时间(转载)
  10. 为VirtualBox里的Linux系统安装增强功能