学Linux - 上红联!
Linux系统教程_红联Linux门户
Linux帮助

ubuntu下ccv库配置及DPM等算法demo

时间:2017-09-08来源:linux网站 作者:xuluohongshang
CCV简介
ccv是一个开源的计算机视觉库,基于C语言开发,是一种以应用驱动的算法库。此处使用DPM模型进行行人检测,参考这里。该算法文献出自于[The original paper refers to: Object Detection with Discriminatively Trained Part-Based Models, Pedro F. Felzenszwalb, Ross B. Girshick, David McAllester and Deva Ramanan]
 
特点:
1)CCV内置缓存机制,并保持简介的功能接口,从而能够透明缓存,进行图像预处理;
2)CCV主要功能不依赖与库函数,使得其很容易嵌入到项目中;
3)CCV实现了一些先进算法,如人脸检测、行人检测、目标定位、目标跟踪、特征点检测等。
 
算法:
BBf(Brightness Binary Feature)
ConvNet(Deep Convolutional Networks)
DPM(Deformable Parts Model)
ICF(Integral Channel Feature)
SCD(SURF-Cascade Detection)
SIFT(Scale Invariant Feature Transform)
SWT(Stroke Width Transform)
TLD(Track Learn Detect)
可处理的图片格式:
貌似对图片的格式有要求,如png,bmp
 
CCV库配置:
1.下载CCV
去github下载zip包到Downloads,使用unzip ccv-stable.zip命令将其解压到当前文件夹下。或者
git clone https://github.com/liuliu/ccv
git checkout stable # switch to stable branch
再把解压后的ccv-stable目录移到自己的主文件夹下
2.下载依赖库(在linux等环境下使用)
sudo apt-get install clang libjpeg-dev libpng-dev libfftw3-dev libgsl0-dev libblas-dev liblinear-dev libblas-dev
3.配置编译
去ccv-stable/lib目录下,输入命令:
./configure force
得到makefile文件用于make
切换到bin目录下,即输入命令:
cd ../bin
make
至此,在bin文件夹下生成一些可执行文件,此时CCV库安装便完成。
 
以DPM算法为例运行bin下的可执行程序算法模块
使用DPM模型检测图片中a.png中的行人,执行过程中会输出行人检测的结果,输出结果路径可指定。
例如
./dpmdetect ~/data/person/test.png ../samples/pedestrian.m | ./dpmdraw.rb ~/data/person/test.png ~/output/output.png
管道后面的命令是为了保存结果图像,其中dpmdetect和dpmdraw.rb为可执行程序,后面的为参数;其中,../samples/pedestrian.m为要装入的训练好的模型
或检测一批图片,重定向输出到result.txt中
./dpmdetect ~/data/person/filelist.txt ../samples/pedestrian.m > ~/output/result.txt
结果可视化:
例如filelist.txt存储了INRIA数据集中的Test/pos路径中所有图片的路径,共计288张图片。
输出result.txt文件中存储了每个行人检测的结果,如下:
Test/pos/crop_000001.png 173 78 188 564 0.830314 8
| 149 112 112 112 0.156994
| 205 373 112 112 0.071194
| 149 261 93 149 0.042143
| 280 261 93 149 -0.178776
| 187 504 93 131 0.511169
| 224 504 93 131 0.601668
| 187 56 93 149 0.529543
| 243 56 93 149 0.806625
对检测到的每一个行人,均给出上述9行信息。第一行指出图片路径,行人位置,置信度,身体部分个数。余下每一行表示各个部分的位置及置信度。
 
以ICF算法为例,测试
使用其中的ICF检测器,在bin目录下打开终端,输入
./icfdetect 图片路径png(or)jpg ../samples/pedestrian.icf
或者输出结果时用,
./icfdetect图片路径png(or)jpg ../samples/pedestrian.icf | ./icfdraw.rb 原输入的处理图片路径png(or)jpg 指定的保存结果路径/output.png
 
自己编程程序进行测试
在ccv-stable的lib目录下如Mytest.c程序,程序内容如下:
#include <ccv.h>
int main(int argc, char** argv)
{
ccv_dense_matrix_t* image = 0;
ccv_read(argv[1], &image, CCV_IO_GRAY | CCV_IO_ANY_FILE);
ccv_write(image, argv[2], 0, CCV_IO_PNG_FILE, 0);
return 0;
}
在lib目录下编写完成后,编译程序,使用如下命令:
clang -L”../lib” -I”../lib” Mytest.c -lccv cat ../lib/.deps
编译通过后会生成一个a.out文件;
然后运行此可执行文件,使用如下命令:
./a.out ../bin/I00000.png copy.png
便会实现程序中的幅值图像的灰度图像功能。
 
注意事项:
1.如果make的时候出现../libgsl.so: underfined reference to ‘cb_las_*’的错误,进入lib文件夹,在config.mk里面 手动加入 -lgslcblas to LDFLAGS
2.在检测过程中可能出现”/usr/bin/env: ruby: 没有那个文件或目录”错误,此时安装ruby即可。
安装ruby使用命令如下:
1)sudo apt-get install ruby-full (Debian/Ubuntu系统)
2)sudo yum install ruby (CentOS,Fedora,RHEL系统)。
3.另外,在使用.rb文件时出现“sh: 1: convert: not found”错误,此时需要安装imagemagick软件,用于编译convert。
sudo apt-get install imagemagick即可。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/32548.html
------分隔线------