基本流程:
定义cpp文件实现算法逻辑,因为编译器在编译的时候是会把c++函数改名,所以对于python调用的函数是要声明为以c的方式编译 #include "execute.h"
extern "C"
{
Execute execute;
void show_matrix(int *matrix, int rows, int columns) {
execute.show_matrix(matrix, rows, columns);
}
// 传递uchar数组到c++
void show_uchar_matrix(uchar *matrix, int rows, int columns) {
execute.show_uchar_matrix(matrix, rows, columns);
}
// 传递图片到c++
void transfer_image(uchar *frame_data, int height, int width, int channel) {
execute.transfer_image(frame_data, height, width, channel);
}
// 在c++层处理数组 并返回值
float sum_array(float *data, int len) {
return execute.sum_array(data, len);
}
// 在c++层处理数组
void change_array(float *data, int len) {
execute.change_array(data, len);
}
// 传递结构体到 c++ 层 并返回结构体
result transfer_struct(result t) {
return execute.transfer_struct(t);
}
}
将cpp文件打包为动态库 so 文件 在python中加载 so 文件,调用对应的cpp算法
一个简单的 c++ 例子
execute.h 头文件
#ifndef PY_C_TEST_EXCUTE_H
#define PY_C_TEST_EXCUTE_H
#include
#include