python plot.py
import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
def plot():
mpl.rcParams['legend.fontsize'] = 10
fig = plt.figure()
ax = fig.gca(projection='3d')
theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)
ax.plot(x, y, z, label='parametric curve')
ax.legend()
plt.show()
c++程序
#include <iostream>
#include <Python.h>
using namespace std;
int main(int)
{
Py_Initialize();
if(!Py_IsInitialized())
{
PyRun_SimpleString("print 'inital error!' ");
return -1;
}
PyRun_SimpleString("print 'inital ok!' ");
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
PyRun_SimpleString("sys.argv = ['python.py']");
PyObject *pName =NULL;
PyObject *pMoudle = NULL;
PyObject *pFunc = NULL;
pName = PyString_FromString("plot1");
pMoudle = PyImport_Import(pName);
if(pMoudle == NULL)
{
PyRun_SimpleString("print 'PyImport_Import error!' ");
return -1;
}
pFunc = PyObject_GetAttrString(pMoudle,"plot");
PyObject_CallObject(pFunc,NULL);
Py_Finalize();
return 0;
}
编写CMakeLists
cmake_minimum_required(VERSION 3.1)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
project(plot_project)
include_directories(/usr/include/python2.7)
link_directories(/usr/include/python2.7)
set(OpenCV_DIR /home/xiaoyuer/myopencv/opencv)
find_package(OpenCV REQUIRED)
add_executable(c++_python c++_python.cpp)
target_link_libraries(c++_python PRIVATE ${OpenCV_LIBS} python2.7)
编译运行