我用Bag of Words训练图像。但是,每次我更改if语句或符号中的条件值时,例如从if(response<0)
到if(response>0)
或从if(response<-1)
到if(response<-0.5)
我得到的结果不同results.push_back(response)
。我无法弄清楚为什么会这样。我只改变了条件,就是这样。请帮我解决这个问题。提前谢谢。
int i, j;
for(i=1;i<=img.cols-width;i=i+20){
for(j=1;j<=img.rows-height;j=j+20){
vector<KeyPoint>keypoints;
Mat ROI = img(Rect(i, j, w, h));
detector.detect(ROI,keypoints);
if (keypoints.data()){
Mat bowDescriptor2;
bowDE.compute(img,keypoints,bowDescriptor2);
evalData.push_back(bowDescriptor2);
std::cout<<"SVM predicting..."<<std::endl;
float response = svm.predict(bowDescriptor2,1);
results.push_back(response);
std::cout<<response<<std::endl;
if(response<0)
{
static CvScalar RED = {0, 0, 255};
rectangle(img, Point(i,j), Point(i+w,j+h), RED, 3, 8, 0);
cvNamedWindow( "result", 1 );
imshow( "result", img );
}
}
}
}
答案 0 :(得分:1)
我发现了我犯错误的地方。问题是我无法使用相同的图像作为输入rectangle(img, Point(i,j), Point(i+w,j+h), RED, 3, 8, 0)
。因此,我阅读了图片并将其定义为img
以及img2
,然后我将img
替换为img2
中的rectangle
。