在从Qt调用的Python脚本中导入OpenCV崩溃
importing opencv in python script called from Qt crashes
我在Qt C++中嵌入Python。当我在 Python 脚本中导入 cv2 时,它因分段错误而崩溃。在 Python 中运行脚本可以工作。在没有Qt的情况下从C++运行有效。
Python scrip: works
print("Importing cv2")
import cv2
print("cv2 imported")
C++:作品
#include <Python.h>
#include <string>
int main(int argc, char *argv[])
{
std::string module_name("PythonModule");
Py_Initialize();
PyObject* sysPath = PySys_GetObject((char*)"path");
PyObject* pModuleDirPath = PyUnicode_FromString(".");
PyList_Append(sysPath, pModuleDirPath);
Py_DECREF(pModuleDirPath);
PyObject* pModuleName = PyUnicode_FromString(module_name.c_str());
PyObject* pModule = PyImport_Import(pModuleName);
Py_DECREF(pModuleName);
Py_DECREF(pModule);
Py_Finalize();
return 0;
}
Qt:打印"导入cv2"后出现分割错误
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
std::string module_name("PythonModule");
Py_Initialize();
PyObject* sysPath = PySys_GetObject((char*)"path");
PyObject* pModuleDirPath = PyUnicode_FromString(".");
PyList_Append(sysPath, pModuleDirPath);
Py_DECREF(pModuleDirPath);
PyObject* pModuleName = PyUnicode_FromString(module_name.c_str());
PyObject* pModule = PyImport_Import(pModuleName);
Py_DECREF(pModuleName);
Py_DECREF(pModule);
Py_Finalize();
}
.pro 文件:
LIBS += -L /usr/local/lib/python3.5m -lpython3.5m
INCLUDEPATH += /usr/include/python3.5m
版本:
Ubuntu 16.04
Python 3.5 opencv-python 3.4.2.17
Qt Creator 4.7.0 基于 Qt 5.11.1
有人认识到这个问题吗?
问题是opencv也使用Qt,所以发生了冲突。 解决方案是在不支持Qt的情况下安装opencv:
pip install opencv-contrib-python-headless
https://pypi.org/project/opencv-contrib-python-headless/
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 导入库可以跨dll版本工作吗
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- OpenCV C++.快速计算混淆矩阵
- 建议在运行时将带有类实例的列表从c++导入qml
- 在C++代码中包含opencv时,使用ctypes创建.so文件
- 哪些库可以通过Opencv调整曝光率
- 安装opencv失败-粘贴CMakeError.log的内容
- 在从Qt调用的Python脚本中导入OpenCV崩溃
- 如何在OPENCV 2.4.13中导入训练有素的SVM检测器
- 使用 OpenCV 在 3D 矩阵中导入 2D 矩阵
- CMAKE:导入时链接 OpenCV 失败
- OpenCV导入在Windows容器中失败(在Windows Server 2016上)
- 在Qt+Opencv中导入Gstreamer视频
- 将权重导入 opencv MLP
- 批量导入包含在Eclipse for Opencv中