opencvを用いたHOG処理。画像が読み込まれない
Posted: 2016年10月19日(水) 23:20
opencvを用いてHOG(輝度勾配の抽出)をするコードなのですが、ビルドは通るのですがデバックした際にfileが指定されていない状態になってしまいます。
何をやっても画像が指定されていないとなってしまいます。
パスなど思いつくこと、ネットに書いてあることはすべて試しましたが解決できませんでした。
違う根本的なミスがあるかとおもうのですが、分かるかたご教授お願いします。
vs2013 opencv3.1.0
main.cpp
commom.h
HOG.h
何をやっても画像が指定されていないとなってしまいます。
パスなど思いつくこと、ネットに書いてあることはすべて試しましたが解決できませんでした。
違う根本的なミスがあるかとおもうのですが、分かるかたご教授お願いします。
vs2013 opencv3.1.0
main.cpp
#include <stdio.h>
#include <string.h>
#include <opencv/cv.h>
#include <opencv/cxcore.h>
#include <opencv/highgui.h>
#include "learning.h"
#include "HOG.h"
#include "common.h"
int onFileOpen(int count);
Clearning ob_LEARN;
CHOG ob_HOG;
IplImage* imgSource = NULL;
IplImage* imgLowSource = NULL;
int main(){
int i;
double descriptor[FEATURE];
// 画像読み込み
onFileOpen(0);
//領域確保
CvSize r_size = cvSize((int)SET_X_SIZE , (int) SET_Y_SIZE);
imgLowSource = cvCreateImage(r_size, IPL_DEPTH_8U, 1);
printf("特徴抽出\n");
for(i=0;i<FILE_NUM;i++){
//ファイル読み込み
onFileOpen(i);
//低解像度へ
cvResize( imgSource, imgLowSource, CV_INTER_LINEAR);
//初期化
ob_HOG.Init(imgLowSource);
//ヒストグラムの作成
ob_HOG.CompHist(imgLowSource);
//特徴量の抽出
ob_HOG.Getfeature(descriptor);
//特徴量を学習用にストック
ob_LEARN.FeatureStock(descriptor,i);
cvReleaseImage(&imgSource);
}
printf("特徴抽出終了\n");
ob_LEARN.RealAdaBoost();
cvReleaseImage(&imgLowSource);
return 0;
}
int onFileOpen(int count){
char fname[200]; // ファイル名を格納するのに充分なサイズ
if(count<POS_FILE){
///ここでfnameに画像pathが渡されなければならない
sprintf_s(fname, "%s%d.bmp", INPUT_POS_DIR, count);
}else{
sprintf_s(fname, "%s%d.bmp", INPUT_NEG_DIR, count - POS_FILE);
}
//ここが常に成り立ってしまうために進まない
// NULL に cvLoadImage(fname, 0)を代入これが0のとき(0はglaysclaeと同様)
if ((imgSource = cvLoadImage(fname, 0)) == 0){
printf("File open error %d\n", count);
exit(1);
}
return 0;
}
commom.h
HOG.h
#pragma once
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <math.h>
#include <stdio.h>
#define CELL_SIZE 8 //8*8pixel
#define BLOCK_SIZE 2 //2*2cell
#define PI 3.14
#define LN_E 1.0
#define SET_X_SIZE 64 //低解像度にしたときのXの大きさ
#define SET_Y_SIZE 128 //低解像度にしたときのYの大きさ
#define ORIENTATION 9
class CHOG
{
public:
CHOG(void);
~CHOG(void);
int Init(IplImage* img);
int CompHist(IplImage* img);
int Getfeature(double hog_feature[]);
private:
int bpp;
int wStep;
double cell_hist[(SET_X_SIZE/CELL_SIZE)][(SET_Y_SIZE/CELL_SIZE)][9];
};