Merge pull request #5515 from LorenaGdL:hitAndMiss
This commit is contained in:
commit
3c31d6add3
@ -225,8 +225,10 @@ enum MorphTypes{
|
||||
//!< \f[\texttt{dst} = \mathrm{morph\_grad} ( \texttt{src} , \texttt{element} )= \mathrm{dilate} ( \texttt{src} , \texttt{element} )- \mathrm{erode} ( \texttt{src} , \texttt{element} )\f]
|
||||
MORPH_TOPHAT = 5, //!< "top hat"
|
||||
//!< \f[\texttt{dst} = \mathrm{tophat} ( \texttt{src} , \texttt{element} )= \texttt{src} - \mathrm{open} ( \texttt{src} , \texttt{element} )\f]
|
||||
MORPH_BLACKHAT = 6 //!< "black hat"
|
||||
MORPH_BLACKHAT = 6, //!< "black hat"
|
||||
//!< \f[\texttt{dst} = \mathrm{blackhat} ( \texttt{src} , \texttt{element} )= \mathrm{close} ( \texttt{src} , \texttt{element} )- \texttt{src}\f]
|
||||
MORPH_HITMISS = 7 //!< "hit and miss"
|
||||
//!< .- Only supported for CV_8UC1 binary images. Tutorial can be found in [this page](http://opencv-code.com/tutorials/hit-or-miss-transform-in-opencv/)
|
||||
};
|
||||
|
||||
//! shape of the structuring element
|
||||
|
@ -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" );
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user