使用Cython将Python np.ndarray(image)转换为C ++ Mat时出现问题

时间:2018-11-16 19:54:54

标签: python c++ numpy opencv cython

我编写了一个函数,该函数使用C ++有效地循环遍历灰度图像像素。关键是使用指向图像行/列的指针,而不是常规的像素访问。

C ++逻辑如下:

Mat image = imread(image_path); //path for the image
for (int j = 0; j < rawDepth.rows; j++)
{
    const ushort* Mi = rawDepth.ptr<ushort>(j); //pointer to the current column
    for (int i = 0; i < rawDepth.cols; i++)
    {
       ushort pixelValue = Mi[i]; //value of the pixel
    }
}

此方法非常快,但我需要在Python上运行。我能够使用Cython成功重写它,但是现在我遇到了获取指向numpy nd数组中的列的指针的问题。

我的图片存储在2D numpy数组中(我使用cv2读取了图片)

我一直在尝试将图像从np数组有效地转换为类似于C ++ Mat对象的结构,从而获得相同的效率。

我尝试了几种在网上找到的方法,但似乎都没有用。我正在使用Python 3.6.6和Cython 0.28.5

谢谢

编辑:我能够实现here中描述的解决方案。我现在有一个cpp文件,可以从pyx文件中调用nparrayToMat()函数。

但是,我似乎无法访问Mat的.ptr函数。

如果有人能指出如何做到这一点,我将不胜感激。

0 个答案:

没有答案