]> rtime.felk.cvut.cz Git - opencv.git/commitdiff
fixed MatConstIterator::pos() (ticket #162; thanks to scharr)
authorvp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Fri, 19 Mar 2010 22:28:10 +0000 (22:28 +0000)
committervp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Fri, 19 Mar 2010 22:28:10 +0000 (22:28 +0000)
git-svn-id: https://code.ros.org/svn/opencv/trunk@2869 73c94f0f-984f-4a5f-82bc-2d8db8d8ee08

opencv/include/opencv/cxmat.hpp

index e9bc27ee5cf9831ff97912fe9990d8f35a585341..e4b0890c25ad05222a3d8261590784c6a0a57f3e 100644 (file)
@@ -3455,13 +3455,15 @@ template<typename _Tp> inline Point MatConstIterator_<_Tp>::pos() const
         return Point();
     if( m->isContinuous() )
     {
-        int ofs = ptr - (_Tp*)m->data, y = ofs / m->cols, x = ofs - y*m->cols;
-        return Point(x,y);
+        ptrdiff_t ofs = ptr - (_Tp*)m->data;
+        int y = (int)(ofs / m->cols), x = (int)(ofs - (ptrdiff_t)y*m->cols);
+        return Point(x, y);
     }
     else
     {
-        int stepT = m->stepT(), y = (ptr - (_Tp*)m->data)/stepT, x = (ptr - (_Tp*)m->data) - y*stepT;
-        return Point(x,y);
+        ptrdiff_t ofs = (uchar*)ptr - m->data;
+        int y = (int)(ofs / m->step), x = (int)((ofs - y*m->step)/sizeof(_Tp));
+        return Point(x, y);
     }
 }