资源简介
配置好opencv249和VS2012的环境之后,设置好工程项目的属性,运行HOGvisualize\Debug或HOGvisualize\Release目录下的opencvtest.exe程序便可看到运行结果,即objimg.jpg图片的hog特征可视化图像hogvisualize.jpg。程序里有较为详细的注释,可以帮助理解hog特征的可视化过程,希望此程序对你有帮助,谢谢。
代码片段和文件信息
#include “opencvtest.h“
using namespace std;
using namespace cv;
// HOGDescriptor visual_imagealizer
// adapted for arbitrary size of feature sets and training images
Mat get_hogdescriptor_visual_image(Mat& origImg
vector& descriptorValues//hog特征向量
Size winSize//图片窗口大小
Size cellSize
int scaleFactor//缩放背景图像的比例
double viz_factor)//缩放hog特征的线长比例
{
Mat visual_image;//最后可视化的图像大小
resize(origImg visual_image Size(origImg.cols*scaleFactor origImg.rows*scaleFactor));
int gradientBinSize = 9;
// dividing 180° into 9 bins how large (in rad) is one bin?
float radRangeForOneBin = 3.14/(float)gradientBinSize; //pi=3.14对应180°
// prepare data structure: 9 orientation / gradient strenghts for each cell
int cells_in_x_dir = winSize.width / cellSize.width;//x方向上的cell个数
int cells_in_y_dir = winSize.height / cellSize.height;//y方向上的cell个数
int totalnrofcells = cells_in_x_dir * cells_in_y_dir;//cell的总个数
//注意此处三维数组的定义格式
//int ***b;
//int a[2][3][4];
//int (*b)[3][4] = a;
//gradientStrengths[cells_in_y_dir][cells_in_x_dir][9]
float*** gradientStrengths = new float**[cells_in_y_dir];
int** cellUpdateCounter = new int*[cells_in_y_dir];
for (int y=0; y {
gradientStrengths[y] = new float*[cells_in_x_dir];
cellUpdateCounter[y] = new int[cells_in_x_dir];
for (int x=0; x {
gradientStrengths[y][x] = new float[gradientBinSize];
cellUpdateCounter[y][x] = 0;
for (int bin=0; bin gradientStrengths[y][x][bin] = 0.0;//把每个cell的9个bin对应的梯度强度都初始化为0
}
}
// nr of blocks = nr of cells - 1
// since there is a new block on each cell (overlapping blocks!) but the last one
//相当于blockstride = (88)
int blocks_in_x_dir = cells_in_x_dir - 1;
int blocks_in_y_dir = cells_in_y_dir - 1;
// compute gradient strengths per cell
int descriptorDataIdx = 0;
int cellx = 0;
int celly = 0;
for (int blockx=0; blockx {
for (int blocky=0; blocky {
// 4 cells per block ...
for (int cellNr=0; cellNr<4; cellNr++)
{
// compute corresponding cell nr
int cellx = blockx;
int celly = blocky;
if (cellNr==1) celly++;
if (cellNr==2) cellx++;
if (cellNr==3)
{
cellx++;
celly++;
}
for (int bin=0; bin {
float gradientStrength = descriptorValues[ descriptorDataIdx ];
descriptorDataIdx++;
gradientStrengths[celly][cellx][bin] += gradientStrength;//因为C是按行存储
} // for (all bins)
// note: overlapping blocks lead to multiple updates of this sum!
// we therefore keep track how often a cell was updated
// to compute average gradient strengths
cellUpdateCounter[celly][cellx]++;//由于block之间有重叠,所以要记录哪些cell被多次计算了
} // for (all cells)
} // for (all block x pos)
} // for (all block y pos)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 36686 2016-03-24 18:56 HOGvisualize\Debug\hogvisualize.jpg
文件 2064 2016-03-24 14:53 HOGvisualize\Debug\objimg.jpg
文件 91136 2016-03-24 21:48 HOGvisualize\Debug\opencvtest.exe
文件 529968 2016-03-24 21:48 HOGvisualize\Debug\opencvtest.ilk
文件 2239488 2016-03-24 21:48 HOGvisualize\Debug\opencvtest.pdb
文件 3566 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\cl.command.1.tlog
文件 141614 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\CL.read.1.tlog
文件 2560 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\CL.write.1.tlog
文件 294985 2016-03-21 20:57 HOGvisualize\opencvtest\Debug\facedetect.obj
文件 361847 2016-03-21 20:58 HOGvisualize\opencvtest\Debug\facematch.obj
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
文件 2 2016-03-24 21:48 HOGvisualize\opencvtest\Debug\li
............此处省略63个文件信息
- 上一篇:电路与模拟电子学
- 下一篇:高保证优品汇电商APP原型axure 8.0制作
相关资源
- 基于vs2013+opencv实现的CT平扫式二维断
- 车牌识别完整版 基于OPENCV3 完全实现
- opencv实现多角度重建
- 车辆识别项目.rar
- 张正友相机标定Opencv实现完整程序+棋
- OpenCV计算机视觉编程攻略 (第2版)
- opencv视频行人检测1HOG+SVM
- OpenCV手势动作识别--石头剪刀布
- 图像匹配 目标轮廓匹配 基于OPENCV库
- opencv视觉导航小车寻迹
- 对图像的一维高斯滤波操作
- opencv420_boostdesc_bgm_vgg_generated.zip
- VS2010 Opencv-2.4.3的配置
- 基于opencv的三维重建代码
-
Robust Real-time ob
ject Detection 论文 整理 - opencv2.1+VS2008实现维纳滤波复原
- opencv3.2交叉编译出来的库文件
- 基于opencv人脸识别的封装
- xfeatures2d.rar
- 基于OpenCV的视频车牌识别
- opencv 普通相机畸变标定校正
- 特征点匹配Demo
- OpenCV2.2 64位
- 基于SVM的手写数字识别Opencv+图像集
- 利用OpenCV(2.4.13)的SURF/SIFT + RANSAC
- asm算法 opencv实现
- OpenCV2.4.9_基于背景差分法的视频目标
- 基于OpenCV的疲劳驾驶检测系统的设计
- HOG行人快速检测
- OpenCV三维重构代码
评论
共有 条评论