私は Ubuntu 20.04、python 3.8 を使用しており、Qt Creator で C++ プロジェクトを開発しています。C++ コードから python ファイルを呼び出そうとしています。conda で環境を作成し、py ファイルを呼び出しています。cv2 モジュールをインポートしようとすると、セグメンテーション違反が発生します。sys、numpy などの他のモジュールをインポートできます。cv2 は環境にインストールされており、cmd プロンプトから python を実行するとアクセスできます。
また、次のように、Python コマンドを C++ ファイルで直接実行しようとしました。
PyRun_SimpleString("import cv2");
しかし、これはセグメンテーション違反も送信します。CMakeLists.txt で site-packages ディレクトリのパスを指定しようとしましたが、同じエラーが発生しました。
メインウィンドウ.cpp:
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <stdio.h>
#include <pyhelper.hpp>
#include <string>
#include <iostream>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
Py_InitializeEx(0);
PyRun_SimpleString("import cv2");
}
MainWindow::~MainWindow()
{
delete ui;
}