int operator()(uchar**, int, uchar*, int) const { return 0; }
};
+#ifdef HAVE_TEGRA_OPTIMIZATION
+typedef tegra::MorphRowIVec<tegra::VMin8u> ErodeRowVec8u;
+typedef tegra::MorphRowIVec<tegra::VMax8u> DilateRowVec8u;
+
+typedef tegra::MorphColumnIVec<tegra::VMin8u> ErodeColumnVec8u;
+typedef tegra::MorphColumnIVec<tegra::VMax8u> DilateColumnVec8u;
+#else
typedef MorphRowNoVec ErodeRowVec8u;
typedef MorphRowNoVec DilateRowVec8u;
+
+typedef MorphColumnNoVec ErodeColumnVec8u;
+typedef MorphColumnNoVec DilateColumnVec8u;
+#endif
+
typedef MorphRowNoVec ErodeRowVec16u;
typedef MorphRowNoVec DilateRowVec16u;
typedef MorphRowNoVec ErodeRowVec16s;
typedef MorphRowNoVec ErodeRowVec32f;
typedef MorphRowNoVec DilateRowVec32f;
-typedef MorphColumnNoVec ErodeColumnVec8u;
-typedef MorphColumnNoVec DilateColumnVec8u;
typedef MorphColumnNoVec ErodeColumnVec16u;
typedef MorphColumnNoVec DilateColumnVec16u;
typedef MorphColumnNoVec ErodeColumnVec16s;
#endif
+
template<class Op, class VecOp> struct MorphRowFilter : public BaseRowFilter
{
typedef typename Op::rtype T;
CV_Assert( op == MORPH_ERODE || op == MORPH_DILATE );
if( op == MORPH_ERODE )
{
- if( depth == CV_8U )
- return Ptr<BaseRowFilter>(new MorphRowFilter<MinOp<uchar>,
- ErodeRowVec8u>(ksize, anchor));
- if( depth == CV_16U )
+ if( depth == CV_8U )
+ return Ptr<BaseRowFilter>(new MorphRowFilter<MinOp<uchar>,
+ ErodeRowVec8u>(ksize, anchor));
+ if( depth == CV_16U )
return Ptr<BaseRowFilter>(new MorphRowFilter<MinOp<ushort>,
ErodeRowVec16u>(ksize, anchor));
if( depth == CV_16S )
}
else
{
- if( depth == CV_8U )
+ if( depth == CV_8U )
return Ptr<BaseRowFilter>(new MorphRowFilter<MaxOp<uchar>,
DilateRowVec8u>(ksize, anchor));
if( depth == CV_16U )
if( depth == CV_32F )
return Ptr<BaseRowFilter>(new MorphRowFilter<MaxOp<float>,
DilateRowVec32f>(ksize, anchor));
- }
-
+ }
+
CV_Error_( CV_StsNotImplemented, ("Unsupported data type (=%d)", type));
return Ptr<BaseRowFilter>(0);
}
CV_Assert( op == MORPH_ERODE || op == MORPH_DILATE );
if( op == MORPH_ERODE )
{
- if( depth == CV_8U )
+ if( depth == CV_8U )
return Ptr<BaseColumnFilter>(new MorphColumnFilter<MinOp<uchar>,
ErodeColumnVec8u>(ksize, anchor));
if( depth == CV_16U )
}
else
{
- if( depth == CV_8U )
+ if( depth == CV_8U )
return Ptr<BaseColumnFilter>(new MorphColumnFilter<MaxOp<uchar>,
DilateColumnVec8u>(ksize, anchor));
if( depth == CV_16U )