change output

MatchTemplateByMatrix now only return the result matrix
This commit is contained in:
Sen 2016-07-25 13:54:55 -04:00
parent d8de6a86b8
commit 344ea4963d

View File

@ -2268,43 +2268,8 @@ NAN_METHOD(Matrix::MatchTemplateByMatrix) {
int method = (info.Length() < 2) ? (int)cv::TM_CCORR_NORMED : info[1]->Uint32Value(); int method = (info.Length() < 2) ? (int)cv::TM_CCORR_NORMED : info[1]->Uint32Value();
cv::matchTemplate(self->mat, templ->mat, m_out->mat, method); cv::matchTemplate(self->mat, templ->mat, m_out->mat, method);
cv::normalize(m_out->mat, m_out->mat, 0, 1, cv::NORM_MINMAX, -1, cv::Mat()); cv::normalize(m_out->mat, m_out->mat, 0, 1, cv::NORM_MINMAX, -1, cv::Mat());
double minVal;
double maxVal;
cv::Point minLoc;
cv::Point maxLoc;
cv::Point matchLoc;
minMaxLoc(m_out->mat, &minVal, &maxVal, &minLoc, &maxLoc, cv::Mat()); info.GetReturnValue().Set(out);
if(method == CV_TM_SQDIFF || method == CV_TM_SQDIFF_NORMED) {
matchLoc = minLoc;
}
else {
matchLoc = maxLoc;
}
//detected ROI
unsigned int roi_x = matchLoc.x;
unsigned int roi_y = matchLoc.y;
unsigned int roi_width = templ->mat.cols;
unsigned int roi_height = templ->mat.rows;
//draw rectangle
if(info.Length() >= 3) {
cv::Rect roi(roi_x,roi_y,roi_width,roi_height);
cv::rectangle(self->mat, roi, cv::Scalar(0,0,255));
}
m_out->mat.convertTo(m_out->mat, CV_8UC1, 255, 0);
v8::Local <v8::Array> arr = Nan::New<v8::Array>(5);
arr->Set(0, out);
arr->Set(1, Nan::New<Number>(roi_x));
arr->Set(2, Nan::New<Number>(roi_y));
arr->Set(3, Nan::New<Number>(roi_width));
arr->Set(4, Nan::New<Number>(roi_height));
info.GetReturnValue().Set(arr);
} }
// @author ytham // @author ytham