Merge pull request #20053 from berak:core_mat_ptr_vec

pull/20071/head
Alexander Alekhin 4 years ago
commit dde029f105
  1. 27
      modules/core/include/opencv2/core/mat.inl.hpp
  2. 16
      modules/core/test/test_mat.cpp

@ -898,6 +898,33 @@ const _Tp* Mat::ptr(const int* idx) const
return (const _Tp*)p; return (const _Tp*)p;
} }
template<int n> inline
uchar* Mat::ptr(const Vec<int, n>& idx)
{
return Mat::ptr(idx.val);
}
template<int n> inline
const uchar* Mat::ptr(const Vec<int, n>& idx) const
{
return Mat::ptr(idx.val);
}
template<typename _Tp, int n> inline
_Tp* Mat::ptr(const Vec<int, n>& idx)
{
CV_DbgAssert( elemSize() == sizeof(_Tp) );
return Mat::ptr<_Tp>(idx.val);
}
template<typename _Tp, int n> inline
const _Tp* Mat::ptr(const Vec<int, n>& idx) const
{
CV_DbgAssert( elemSize() == sizeof(_Tp) );
return Mat::ptr<_Tp>(idx.val);
}
template<typename _Tp> inline template<typename _Tp> inline
_Tp& Mat::at(int i0, int i1) _Tp& Mat::at(int i0, int i1)
{ {

@ -2365,4 +2365,20 @@ TEST(Mat, regression_18473)
} }
TEST(Mat, ptrVecni_20044)
{
Mat_<int> m(3,4); m << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12;
Vec2i idx(1,1);
uchar *u = m.ptr(idx);
EXPECT_EQ(int(6), *(int*)(u));
const uchar *cu = m.ptr(idx);
EXPECT_EQ(int(6), *(int*)(cu));
int *i = m.ptr<int>(idx);
EXPECT_EQ(int(6), *(i));
const int *ci = m.ptr<int>(idx);
EXPECT_EQ(int(6), *(ci));
}
}} // namespace }} // namespace

Loading…
Cancel
Save