我正在尝试从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