C ++调用导入cv2的python脚本失败

时间:2018-08-27 08:30:45

标签: python c++ opencv

我正在尝试从C ++代码执行一个简单的python3脚本来加载和显示图像。

我按如下方式创建了prog.py:

import cv2

img = cv2.imread("test.jpg")
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

使用python3 prog.py命令运行此代码非常有效。

现在我需要从c ++运行此代码(我知道我可以在c ++中执行相同的操作,但是一旦我可以使其工作,就需要向python代码添加更多功能)

我编写了如下的c ++代码(注意:我正在使用QT)

#include <Python.h>
#include <QCoreApplication>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    char filename[] = "prog.py";
    FILE* fp;
    Py_Initialize();
    fp = _Py_fopen(filename, "r");
    PyRun_SimpleFile(fp, filename);
    Py_Finalize();
    return 0;
    return a.exec();
}

代码可以正确编译,但是一旦我运行它,它就会崩溃。

我尝试将PYTHONPATH更改为/usr/local/lib/python3.5/dist-packages(其中pip安装保存python-opencv)也失败了。

为确保代码能正常工作,我修改了pyhton代码,只是为了打个招呼世界而没有任何导入,而c ++代码也能正常运行,因此问题出在导入cv2上

我这里缺少什么吗?

如@KillPinguin所述,在prog.py中做了以下内容

import os

print (os.getenv('path'))
print (os.getenv('pythonpath'))

同时在python和c ++中运行代码会给出以下输出:

None
None

0 个答案:

没有答案
相关问题