Merge pull request #5515 from LorenaGdL:hitAndMiss

This commit is contained in:
Vadim Pisarevsky
2015-11-02 11:49:37 +00:00
2 changed files with 23 additions and 1 deletions

View File

@@ -1872,6 +1872,8 @@ void cv::morphologyEx( InputArray _src, OutputArray _dst, int op,
_dst.create(src.size(), src.type());
Mat dst = _dst.getMat();
Mat k1, k2, e1, e2; //only for hit and miss op
switch( op )
{
case MORPH_ERODE:
@@ -1907,6 +1909,24 @@ void cv::morphologyEx( InputArray _src, OutputArray _dst, int op,
erode( temp, temp, kernel, anchor, iterations, borderType, borderValue );
dst = temp - src;
break;
case MORPH_HITMISS:
CV_Assert(src.type() == CV_8UC1);
k1 = (kernel == 1);
k2 = (kernel == -1);
if (countNonZero(k1) <= 0)
e1 = src;
else
erode(src, e1, k1, anchor, iterations, borderType, borderValue);
if (countNonZero(k2) <= 0)
e2 = src;
else
{
Mat src_complement;
bitwise_not(src, src_complement);
erode(src_complement, e2, k2, anchor, iterations, borderType, borderValue);
}
dst = e1 & e2;
break;
default:
CV_Error( CV_StsBadArg, "unknown morphological operation" );
}