我正在使用Opencv 3.0+ Vs2008,(win * 86 PC)。我想在opencv中使用HOGDescriptor进行一些研究,但代码在VS2008的Release模式中抛出异常。同时代码在Deubug模式下运行良好。这是我的代码:
#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include<string>
#include<iostream>
#include<vector>
using namespace std;
using namespace cv;
int main()
{
string imagePath="E:/test/3.jpg";
Mat img=imread(imagePath,IMREAD_GRAYSCALE);
if (img.empty())
{
cout<<"Can't read image,please check!"<<endl;
return -1;
}
HOGDescriptor hog;
vector< Point > location;
vector< float > descriptors;
hog.compute( img, descriptors, Size( 8, 8 ), Size( 0, 0 ), location );
return 0;
}
我逐步调试代码,我怀疑Opencv源代码有错误。我发现在第586行的“hog.cpp”中抛出异常,这里是代码: ......
for (; i <= blockSize.height - 4; i += 4)
{
__m128 t = _mm_sub_ps(_mm_cvtepi32_ps(idx), _bh);
t = _mm_mul_ps(t, t);
idx = _mm_add_epi32(idx, ifour);
_mm_storeu_ps(_di + i, t);
}
代码“i&lt; = blockSize.height - 4”运行时错误。 我认为我的Code Project属性是正确的,术语:“c / c ++” - 代码生成,运行时库是发布模式下的“多线程DLL(/ MD)”。 有谁知道这个问题?谢谢你的帮助!