如何获取图像uchar阵列';s实际长度opencv2

如何获取图像uchar阵列';s实际长度opencv2,opencv,Opencv,我试图用GPU模糊图像。我将编写自己的GPU例程。我正在使用Opencv2库进行图像读取 我想访问图像数组(uchar*),为此我想;我可以做到以下几点 cv::Mat im = imread( 'lena.jpg'); 我还可以弄清楚我可以访问uchar*阵列-- 现在的问题是,为了提高效率,有填充字节放进了这个文件中。这意味着此数组的大小可以大于(或等于)宽度*高度*通道 如何获得 a) 此数组的实际大小 b) 像widthStep之类的变量,用于递增 按行 你需要所谓的步幅或步幅。 您

我试图用GPU模糊图像。我将编写自己的GPU例程。我正在使用Opencv2库进行图像读取

我想访问图像数组(uchar*),为此我想;我可以做到以下几点

cv::Mat im = imread( 'lena.jpg');
我还可以弄清楚我可以访问uchar*阵列--

现在的问题是,为了提高效率,有填充字节放进了这个文件中。这意味着此数组的大小可以大于(或等于)宽度*高度*通道

如何获得

  • a) 此数组的实际大小
  • b) 像widthStep之类的变量,用于递增 按行
    • 你需要所谓的步幅或步幅。
      您可以使用
      im.step
      访问它,如中所示:

      cv::Mat im = imread( 'lena.jpg');
      uchar * data = im.data;
      int stepWidth = im.step;
      

      这个uchar*数组的总长度(考虑填充字节)如何?这个乘法真的有必要吗。没有内部变量可以给出这个计数吗?真的吗?即使有,你担心的是一次乘法吗?查看cv::Mat文档和标题,您可能会在那里找到一些东西。
      cv::Mat im = imread( 'lena.jpg');
      uchar * data = im.data;
      int stepWidth = im.step;