]> rtime.felk.cvut.cz Git - opencv.git/commitdiff
asserts in Mat::at<...> made less strict (can now use m.at<float>(y,x*3+1) to access...
authorvp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Thu, 18 Feb 2010 14:57:19 +0000 (14:57 +0000)
committervp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Thu, 18 Feb 2010 14:57:19 +0000 (14:57 +0000)
git-svn-id: https://code.ros.org/svn/opencv/trunk@2702 73c94f0f-984f-4a5f-82bc-2d8db8d8ee08

opencv/include/opencv/cxmat.hpp

index fa54d77d3e961fe81284d8196e04a4f12d87088c..e9bc27ee5cf9831ff97912fe9990d8f35a585341 100644 (file)
@@ -477,29 +477,33 @@ template<typename _Tp> inline const _Tp* Mat::ptr(int y) const
 
 template<typename _Tp> inline _Tp& Mat::at(int y, int x)
 {
-    CV_DbgAssert( (unsigned)y < (unsigned)rows && (unsigned)x < (unsigned)cols &&
-        sizeof(_Tp) == elemSize() );
+    CV_DbgAssert( (unsigned)y < (unsigned)rows &&
+        (unsigned)(x*DataType<_Tp>::channels) < (unsigned)(cols*channels()) &&
+        CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1());
     return ((_Tp*)(data + step*y))[x];
 }
 
 template<typename _Tp> inline const _Tp& Mat::at(int y, int x) const
 {
-    CV_DbgAssert( (unsigned)y < (unsigned)rows && (unsigned)x < (unsigned)cols &&
-        sizeof(_Tp) == elemSize() );
+    CV_DbgAssert( (unsigned)y < (unsigned)rows &&
+        (unsigned)(x*DataType<_Tp>::channels) < (unsigned)(cols*channels()) &&
+        CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1());
     return ((const _Tp*)(data + step*y))[x];
 }
 
 template<typename _Tp> inline _Tp& Mat::at(Point pt)
 {
-    CV_DbgAssert( (unsigned)pt.y < (unsigned)rows && (unsigned)pt.x < (unsigned)cols &&
-        sizeof(_Tp) == elemSize() );
+    CV_DbgAssert( (unsigned)pt.y < (unsigned)rows &&
+        (unsigned)(pt.x*DataType<_Tp>::channels) < (unsigned)(cols*channels()) &&
+        CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1());
     return ((_Tp*)(data + step*pt.y))[pt.x];
 }
 
 template<typename _Tp> inline const _Tp& Mat::at(Point pt) const
 {
-    CV_DbgAssert( (unsigned)pt.y < (unsigned)rows && (unsigned)pt.x < (unsigned)cols &&
-        sizeof(_Tp) == elemSize() );
+    CV_DbgAssert( (unsigned)pt.y < (unsigned)rows &&
+        (unsigned)(pt.x*DataType<_Tp>::channels) < (unsigned)(cols*channels()) &&
+        CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1());
     return ((const _Tp*)(data + step*pt.y))[pt.x];
 }