videosearch

 

开源项目地址:https://github.com/andrefaraujo/videosearch

1、终端模式下切换到root身份:sudo -s -H

查看IP:ifconfig -a

2、Opencv可以直接从库中安装   (选择的是阿里云的源):

sudo apt-get install libopencv-dev python-opencv

3、Ubuntu16.04下安装FFmpeg:

sudo apt-get install ffmpeg

如果提示错误      :      E: 软件包 ffmpeg 没有可供安装的候选者

参考:https://blog.csdn.net/weixin_37251044/article/details/78380303

独立安装时,bash: ./configure: 权限不够
给文件加上可执行权限: chmod +x configure

4、ubuntu 安装 pkg-config

sudo apt-get install pkg-config

5、进入目录:cd /usr/lib

新建文件夹:mkdir videosearch

rm -rf 非空目录名 (删除一个包含文件的文件夹)

6、克隆资源库:

git clone https://github.com/andrefaraujo/videosearch.git

此时提示git未安装,则安装:apt install git

不能访问的话,单独下载然后复制进来:

移动一个文件夹到另一个文件夹下:sudo mv 文件名 目标文件夹路径

复制一个文件夹到另一个文件夹下:sudo cp -r 文件名 目标文件夹路径 (-r 就是递归的意思,删除时 也同样这么加-r)

复制一个文件到另一个路径下:sudo cp 文件路径/文件名 目标文件夹路径

sudo cp -r videosearch-master.zip /usr/lib/

然后解压改名字

unzip videosearch-master.zip
mv videosearch-master videosearch

7、建立VLFET库(计算机视觉库)

cd videosearch/common/vlfeat-0.9.18/

make

8、建立YAEL库(图像检索库)

安装之前提示,要安装swig:

sudo apt-get install swig

安装 g++:  

sudo apt-get install g++
g++ -version

安装BLAS和LAPACK(https://blog.csdn.net/papageno_xue/article/details/79955599)

sudo apt-get install libblas-dev checkinstall
sudo apt-get install libblas-doc checkinstall
sudo apt-get install liblapack-dev checkinstall
sudo apt-get install liblapack-doc checkinstall

cd  /usr/lib/videosearch/common/yael_v260_modif/

./configure.sh

cd yael

             make

如果make时显示:yael_wrap.c:125:20: fatal error: Python.h: 没有那个文件或目录

那么需要安装python-dev这个包:

sudo apt-get install python-dev

9、给视频数据库中的视频提取关键帧

cd /usr/lib/videosearch/indexer/keyframes

./run_keyframe_extraction_test.sh

数据库视频中提取关键帧,首先根据“视频列表.txt”文档获取包含视频路径、视频文件名及视频后缀的列表,然后遍历视频数据库列表,对每个视频进行获取关键帧操作,然后把关键帧的列表记录文件和关键帧的图片分别以txt文档和jpg图片格式存放。

10、建立镜头边界检测器并且给数据库中的视频检测视频边界

 

cd /usr/lib/videosearch/indexer/shot_detector

make

./run_shot_detector_test.sh

建立镜头边界检测器,提取镜头边界用于测试数据库视频。首先根据上一步,提取视频关键帧后,产生视频列表文档,记录每个视频产生的关键帧,然后为每个视频提取视频检测边界。

11、建立SIFT(图像关键点)提取器并且给数据库中的每个关键帧提取SIFT

 

cd /usr/lib/videosearch/indexer/local_descriptors/

make

./run_sift_extraction_test.sh

首先获取上面步骤产生的关键帧列表keyframes.txt,并设置相应的线程数量threadsThreads个线程,同时对keyframes.txt里面的关键帧所记录的图片遍历,并在每个视频文件生成关键帧的文件夹下生成每张图片对应的SIFT文件。

算法描述

thread,keyframes.txt;

keyframeslist=read(keyframes.txt);

for(int i=0;i<thread;i++){

thread(i){

keyframeimage=read(keyframe(j).jpg)

sift(keyframeimage)

output(keyframe(j).siftb)

}

}

 

编译make的时候出现问题:/usr/bin/ld:extract.o:undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'

62行报错,在62行分号之前添加-lpthread

12、建立全局描述子提取器

cd /usr/lib/videosearch/indexer/global_descriptors/

make

构建全局描述符提取器,并提取每个帧、镜头和场景的全局描述符

首先,为每一个视频剪辑提取基于框架的全局描述符,然后把所有视频的全局描述存放到索引文件中。

算法描述

keyframes.txt;

keyframeslist=read(keyframes.txt);

for videoitem in keyframeslist:

  GDS(i)=GD(videoitem)

  output(GDS(i).sift_scfv_idx_k512)//生成单个视频二进制全局描述

  output(global_index.sift_scfv_idx_k512)//生成全局描述

13、提取查询图片的SIFT

cd /usr/lib/videosearch/indexer/local_descriptors/
          ./run_sift_extraction_test_query.sh
          # Optional: extract global descriptors
          cd $mypath/videosearch/indexer/global_descriptors/
          ./run_query_index_test.sh

为查询图像提取本地描述符(以及可选的全局描述符)(在运行retriever之前需要这样做,这是下一步)

首先获取记录查询图片的txt文档获取图片列表,为每张图片生成对应的SIFT文件,并输出到对应文件夹中。

算法描述

querylist.txt;//查询图片列表所在文件

threads;//线程数量

queryimagelist=read(querylist.txt;);//获取查询图片列表

for queryimage in queryimagelist:

  output(queryimage.siftb)//生成二进制SIFT文件

14、建立检索器

构建检索器并为基于帧、镜头和场景的索引运行。

一是,可以使用基于框架的全局描述符检索,也可以使用基于框架的全局描述符检索,使用预先计算的查询全局描述符。

算法

frame_db_list.txt   

//视频库中所有关键帧列表文件

query_list.txt

//需要查询图片列表文件

frame_db_list=read(frame_db_list.txt);

 

query_list=read(query_list.txt);

 

for queryitem in query_list:

 

  for framedbitem in frame_db_list:

 

    if(queryitem ==framedbitem)

 

       output(framedbitem)

//输出满足相似度的图片编号

二是,使用基于shot的全局描述符(LOC模式)检索

三是,使用基于shot的全局描述符(INDEP模式)检索。

15、精准度和精准度

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴良秋(科创恩施)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值