相关疑难解决方法(0)

为使用OpenCV的C++代码编写Python绑定

我正在尝试为一些使用OpenCV的C++代码编写一个python包装器,但是我很难将结果(一个OpenCV C++ Mat对象)返回给python解释器.

我查看了OpenCV的源代码,发现文件cv2.cpp具有转换函数,可以在PyObject*和OpenCV的Mat之间来回执行转换.我使用了那些转换函数,但在我尝试使用它们时遇到了分段错误.

我基本上需要一些关于如何使用OpenCV来连接python和C++代码的建议/示例代码/在线参考,特别是能够将OpenCV的C++ Mat返回给python解释器,或者可能建议如何/从何处开始调查原因分段错误.

目前我正在使用Boost Python来包装代码.

在此先感谢任何回复.

相关代码:

// This is the function that is giving the segmentation fault.
PyObject* ABC::doSomething(PyObject* image)
{
    Mat m;
    pyopencv_to(image, m);  // This line gives segmentation fault.

    // Some code to create cppObj from CPP library that uses OpenCV
    cv::Mat processedImage = cppObj->align(m);

    return pyopencv_from(processedImage);
}
Run Code Online (Sandbox Code Playgroud)

从OpenCV的源代码转换函数如下.转换代码在带有"if(!PyArray_Check(o))..."的注释行中给出了分段错误.

static int pyopencv_to(const PyObject* o, Mat& m, const char* name = "<unknown>", bool allowND=true)
{
    if(!o || o == Py_None)
    {
        if( !m.data )
            m.allocator …
Run Code Online (Sandbox Code Playgroud)

c++ python boost opencv boost-python

25
推荐指数
2
解决办法
1万
查看次数

Python和gpu OpenCV函数

我想知道是否有可能使用像这里的 opencv gpu函数?或者我必须将它包装到python类中.

python opencv gpu

8
推荐指数
1
解决办法
1万
查看次数

OpenCV 3.2 CUDA支持python

我刚刚按照http://www.pyimagesearch.com/2016/07/11/compiling-opencv-with-cuda-support/中的说明安装了使用CUDA支持的OpenCV 3.2编译. 我只是想知道如何检查我的OpenCV是否是运行时使用CUDA和GPU支持(我使用python2.7)

opencv python-2.7

7
推荐指数
1
解决办法
2万
查看次数

尝试编写 C++ 包装函数时,无法在 Cython 中将 Numpy 数组转换为 OpenCV Mat

我正在尝试在 python2 中实现cv::cuda::warpPerspective,这里有一篇关于如何做到这一点的非常好的帖子:link。我按照该帖子中描述的说明进行操作,但是出现Segmentation fault (core dumped)错误。

\n\n

我能够在GpuWrapper.pyx文件第 11 行中分配错误:

\n\n
pyopencv_to(<PyObject*> _src, src_mat)\n
Run Code Online (Sandbox Code Playgroud)\n\n

似乎无法将 numpy 数组转换为 opencv Mat。

\n\n

我不确定哪里出了问题以及如何修复。

\n\n

出现错误的Python脚本Segmentation fault (core dumped)如下:

\n\n
import cv2\nimport numpy as np\nimport csv\nimport timeit\nimport GpuWrapper\n\nwhile (1):\n    start = timeit.default_timer()\n    eo_img = cv2.imread(\'./sample/eo.png\', 1)\n    nir_img = cv2.imread(\'./sample/nir.png\', 0)\n    with open(\'./sample/reg.csv\', \'rb\') as f:\n        line = csv.reader(f)\n        reg_line = list(line)\n    reg = np.array(reg_line[0], dtype=np.float32)\n    new_reg = reg.reshape((3,3))\n    print nir_img.shape\n    dist = …
Run Code Online (Sandbox Code Playgroud)

python opencv cython python-2.7

6
推荐指数
1
解决办法
2188
查看次数

将ndarray转换为cv :: Mat的最简单方法是什么?

我正在尝试为使用OpenCV中的类的C ++库创建Python / Cython包装器cv::Mat。在官方的Python包装器中,所有函数都使用NumPy ndarray代替cv::Mat,这非常方便。但是在我自己的包装器中,如何进行这种转换?也就是说,我怎么创建 cv::Mat np.ndarray

c++ python opencv numpy cython

5
推荐指数
1
解决办法
4502
查看次数

标签 统计

opencv ×5

python ×4

c++ ×2

cython ×2

python-2.7 ×2

boost ×1

boost-python ×1

gpu ×1

numpy ×1