C++
语言包装成C
函数
#ifndef OPENCVAPPLY_H
#define OPENCVAPPLY_H
#ifdef __cplusplus
extern "C" {
#endif
// 加入自定义函数
#ifdef __cplusplus
}
#endif
#endif
1.opencvapply.cpp
文件:引入C++
语言库,编写自定义函数
#include "opencvapply.h"
//#include <iostream>
#include <opencv2/opencv.hpp> // `C++`语言库
using namespace cv;
//extern "C" void opencv_func();
void image_get(int para1, int para2, unsigned char *data)
{
// Create the Mat , save Mat image
cv::Mat img_mat = cv::Mat(para1, para2, CV_8UC1);
memcpy(img_mat.data, data, 3 * para1 * para2);
cv::imwrite("soga.jpg", img_mat);
}
//extern "C" unsigned char* data_func();
unsigned char* data_get(int para1, int para2)
{
// Create the data memory space
unsigned char *data = new unsigned char[3 * para1 * para2];
return data;
}
void delete_data(unsigned char *data)
{
delete[] data;
data = NULL;
}
2.opencvapply.h
文件:C++
语言包装成C
函数
#ifndef OPENCVAPPLY_H
#define OPENCVAPPLY_H
#ifdef __cplusplus
extern "C" {
#endif
void image_get(int para1, int para2, unsigned char *data);
unsigned char* data_get(int para1, int para2);
void delete_data(unsigned char *data);
#ifdef __cplusplus
}
#endif
#endif
3.在.c
文件中直接引入opencvapply.h
文件,即可使用C++
的自定义函数:
#include "opencvapply.h"
...
unsigned char *data2;
data2 = data_get(renderBufferWidth, renderBufferHeight);
...
image_get(renderBufferWidth, renderBufferHeight, data2);
delete_data(data2);
...