импорт opencv в скрипте Python, вызванный из сбоев Qt - PullRequest
0 голосов
/ 10 октября 2018

Я встраиваю Python в Qt C ++.Когда я импортирую cv2 в скрипт Python, он падает с ошибкой сегментации.Запуск скрипта в Python работает.Запуск из C ++ без Qt работает.

Скрипт Python: работает

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: ошибка сегментации после печати "Importing 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

Кто-нибудь знает эту проблему?

1 Ответ

0 голосов
/ 27 февраля 2019

Проблема заключалась в том, что opencv также использует Qt, поэтому произошло столкновение.Решением было установить opencv без поддержки Qt:

pip install opencv-contrib-python-headless

https://pypi.org/project/opencv-contrib-python-headless/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...