以下代码是在类ocvMngWrapper中定义的FindCircle方法,现在我想新定义一个实现模板匹配的方法,要怎么定义?
public ref class ocvMngWrapper
{
public: int FindCircle(array^ AImageData,array^ AFParams,array^ AaFRes)
{
try
{
if(AFParams == nullptr || AImageData == nullptr || AaFRes == nullptr)
{
AaFRes = nullptr;
return 0;
}
//Q.F.2016.06.13
int iRet=0;
pin_ptr<byte> pin = &AImageData[0];
pin_ptr<float> pinRes = &AaFRes[0];
pin_ptr<float> pinParams = &AFParams[0];
iRet=_imgOCVIF->FindCircle(pin,pinParams,AFParams->Length,pinRes);
}
catch (Exception^ e)
{
}
}
下面是C++定义的模板匹配的函数:
int ImgOCV_IF::matchTemplate(IplImage* image,IplImage* templ, IplImage* result, IplImage* circleImg, int method)
{
int method = CV_TM_SQDIFF_NORMED;
int iwidth = image->width - templ->width + 1;
int iheight = image->height - templ->height + 1;
result = cvCreateImage(cvSize(iwidth, iheight), 32, 1);
double min_val;
double max_val;
CvPoint min_loc;
CvPoint max_loc;
cvMatchTemplate(image, templ, result,method);
cvMinMaxLoc(result, &min_val, &max_val, &min_loc, &max_loc, NULL);
CvSize size= cvSize(templ->width+20, templ->height+20);
circleImg = cvCreateImage(size,image->depth,image->nChannels);
//image中现在存放的就是mark点的区域部分图像
cvSetImageROI(image, cvRect(min_loc.x-10, min_loc.y-10, templ->width+20, templ->height+20));
//cvNamedWindow("src", CV_WINDOW_AUTOSIZE);
//cvShowImage("src", image);
cvCopy(image,circleImg);
}