我正在尝试从Web服务中调用OpenCV面部检测方法,但是我遇到了各种错误。不确定是否可以这样做或者之前是否有人尝试过。 这是我做的:
1-将http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html处的修改后的示例OpenCV代码编译为C ++ DLL。修改后的代码包含在下面
String face_cascade_name = "haarcascade_frontalface_alt2.xml";
CascadeClassifier face_cascade;
__declspec(dllexport) int __stdcall DetectFaceFromLumaBuffer (char *GrayBuf, int Rows, int Cols)
{
if (face_cascade.empty())
{
if (!face_cascade.load(face_cascade_name))
{
return (-1);
}
}
Mat LumaFrame (Rows, Cols, CV_8UC1, GrayBuf, Mat::AUTO_STEP);
int Idx = 0;
equalizeHist(LumaFrame, LumaFrame); /* Equalize the image histogram */
std::vector<Rect> DetFaces; /* Array of detected rectangles */
face_cascade.detectMultiScale (LumaFrame, DetFaces, 1.1, 3, 0|CV_HAAR_SCALE_IMAGE|CV_HAAR_FIND_BIGGEST_OBJECT, Size(10, 10), Size(LumaFrame.cols, LumaFrame.rows) );
return (DetFaces.size());
}
2-使用平台调用从.NET C#应用程序调用DLL的DetectFaceFromLumaBuffer()。这很好。
3-使用平台调用也从Web服务调用相同的功能。本地IIS崩溃:IIS Express Worker Process已停止工作。
4-注释掉“equalizeHist(LumaFrame,LumaFrame);”行,调用生成异常“SEHException未被用户代码处理”
有什么想法吗? 我正在使用VS 2012 express和OpenCV 247
由于