我正在使用cython memoryviews来引用一些灰度图像。我已经成功地在我编写的一些图像处理代码中使用了它。现在,我需要使用一些OpenCV函数。不幸的是,我发现我不能将memoryviews作为图像参数传递给OpenCV函数。代码可以编译,但当它运行时,它在调用OpenCV函数时停止,并显示“TypeError: is not a numpy array”。
我可以使用np.asarray(my_memoryview)将memoryview转换回numpy数组。这个方法可以工作,但它会复制数据并且速度很慢。
在memoryview文档中,他们谈到了强制转换为numpyhttp://docs.cython.org/src/userguide/memoryviews.html#coercion-to-numpy,看起来我应该能够将memoryview强制转换为numpy数组而不复制内存。然而,如果我写:
我可以使用np.asarray(my_memoryview)将memoryview转换回numpy数组。这个方法可以工作,但它会复制数据并且速度很慢。
在memoryview文档中,他们谈到了强制转换为numpyhttp://docs.cython.org/src/userguide/memoryviews.html#coercion-to-numpy,看起来我应该能够将memoryview强制转换为numpy数组而不复制内存。然而,如果我写:
im = np.asarray(<np.uint8_t[:, :]> my_memoryview)
这会导致编译错误:"只能从指针或数组创建cython.array"
如何将memoryview传递给OpenCV函数,或者如何强制将memoryview转换为numpy数组而不复制数据,任何帮助都将不胜感激!