1. 生成dll文件
- 利用visual studio 2017新建一个windows控制台应用空项目。
- 添加接口定义和实现相关的.h和.cpp文件,示例如下:
# .h文件
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#ifdef ImageHandleDLL_EXPORTS
#define ImageHandle_EXPORTS extern "C" __declspec(dllexport)
#else
#define ImageHandle_EXPORTS extern "C" __declspec(dllimport)
#endif
typedef enum
{
OPERATION_SUCCESS = (0),
INPUT_CHANNELS_ERR = (1),
INPUT_EMPTY_ERR = (2),
PROCESS_FAILE = (3),
} ErrCode;
ImageHandle_EXPORTS ErrCode Read_Image(char * filepath, unsigned char **output_image_data, int &image_h, int &image_w, int &input_image_channels);
ImageHandle_EXPORTS ErrCode Write_Image(unsigned char **intput_image_data, char * filepath, int image_h, int image_w, int input_image_channels);
ImageHandle_EXPORTS ErrCode Image_Gray(unsigned char **input_image_data, unsigned char **output_image_data, int image_h, int image_w, int input_image_channels = 3);
# .cpp文件
ErrCode Read_Image(char * filepath, unsigned char **output_image_data, int &image_h, int &image_w, int &input_image_channels)
{
try {
cv::Mat src = cv::imread(filepath);
image_h = src.rows;
image_w = src.cols;
input_image_channels = src.channels();
if (output_image_data[0] == nullptr) {
output_image_data[0] = (unsigned char *)malloc(image_h*image_w *input_image_channels * sizeof(unsigned char