C++ 海关;Mat.at()-与OpenCV中的函数类似,可提高可读性并保持速度

C++ 海关;Mat.at()-与OpenCV中的函数类似,可提高可读性并保持速度,c++,image,opencv,image-processing,mat,C++,Image,Opencv,Image Processing,Mat,我读过Mat,指针访问(获取指向行的指针,然后使用[]访问列)是访问它的最快方式。我个人非常喜欢at()-函数,因为它更容易阅读和理解。 因此,我认为可以将指针访问“包装”到一个更好的函数中,以保持可读性和快速访问,例如: uchar getMatValue(Mat &matrix, int row, int col) { const uchar* Mi = matrix.ptr<uchar>(row); return Mi[col]; } uchar ge

我读过Mat,指针访问(获取指向行的指针,然后使用[]访问列)是访问它的最快方式。我个人非常喜欢at()-函数,因为它更容易阅读和理解。 因此,我认为可以将指针访问“包装”到一个更好的函数中,以保持可读性和快速访问,例如:

uchar getMatValue(Mat &matrix, int row, int col)
{
    const uchar* Mi = matrix.ptr<uchar>(row);
    return Mi[col];
}
uchar getMatValue(Mat&matrix,int行,int列)
{
常量uchar*Mi=矩阵.ptr(行);
返回Mi[col];
}
这种访问真的会很快吗?或者重复访问同一行指针会比“正常方式”慢吗?有没有其他更好的方法

我对OpenCV编程和C++很陌生,所以我想知道有没有人尝试过类似的东西来提高可读性。< /P>不是所有的垫子都是uChar(实际上大多数不是)。只需使用Mat::at,直到您学会如何避免每像素操作而使用更高级别的函数。您的代码是

at
函数的糟糕实现,因此您最好使用
at
。为了提高可读性,您可以使用
Mat
,即
Mat3b
Mat1f
等。。。而且,在进行任何优化之前,请先查看配置文件!并非所有的Mat都是uchar(实际上,大多数不是)。只需使用Mat::at,直到您学会如何避免每像素操作而使用更高级别的函数。您的代码是
at
函数的糟糕实现,因此您最好使用
at
。为了提高可读性,您可以使用
Mat
,即
Mat3b
Mat1f
等。。。而且,在进行任何优化之前,请先查看配置文件!