首先是頭文件。下面文件可以直接編譯成DLL。主函數是cluseterMethod。
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif
#include <string>
#include <vector>
#include "opencv2/opencv.hpp"
MYDLL_API void cluseterMethod(cv::Mat lenaImg, std::vector<cv::Rect>& rects);
CPP文件,MyDLL.cpp。這裏包含了MyDLL.h等頭文件。頭文件包括了Mat所用的HPP文件。
#include "MyDLL.h"
MYDLL_API float getDistance(cv::Point3f t1, cv::Point3f t2)
{
double dx = powf((t1.x - t2.x), 2);
double dy = powf((t1.y - t2.y), 2);
double dz = powf((t1.z - t2.z), 2);
return sqrt(dx + dy + dz);
};
//根據質心,決定當前元組屬於哪個簇
MYDLL_API int class_inputdata(cv::Point3f means[], cv::Point3f tuple)
{
float dist = getDistance(means[0], tuple);
float tmp;
int label = 0;//標示屬於哪一個簇
for (int i = 1; i < CLUSTERCNT; i