/* tea sorter */ #pragma once #include "data_def_api.h" using namespace std; //定义TCV_DEBUG,每一步图像处理都会输出中间结果图片显示(opencv),回车后继续执行,用于测试 // #define TCV_DEBUG // export #define TCV_EXPORTS #ifdef TCV_EXPORTS #define TCV_API __declspec(dllexport) #else #define TCV_API __declspec(dllimport) #endif #ifdef __cplusplus extern "C" { #endif namespace graft_cv { //1 设置log路径 TCV_API int cv_set_logpath(char*lpath); //2 设置log等级 TCV_API int cv_set_loglevel(int lev);// 0-debug, 1-info, 2-warning, 3-error //3 设置是否存储图片(存储路径在configure文件中),true--保存,false--不保存 TCV_API int cv_init_image_saver(); //4 初始化:本地配置文件初始化(yml) // 返回: 0- 正常; 1- 配置文件不存在 TCV_API int cv_init(char*conf_file); //5 初始化:通过ConfigParam结构体对象直接赋值配置参数(内存) TCV_API void cv_set_param(ConfigParam&); TCV_API int cv_set_param_from_file(char*conf_file); //6 接口退出前的释放 TCV_API int cv_release(); //7 获取当前配置文件路径,输入char*要空间足够,内部没有检测是否越界 TCV_API void cv_get_conf_file(char*); //8 保存到本地配置文件中(覆盖) TCV_API void cv_save_param(char* conf_file/*=0*/); //9 获取当前的配置参数 TCV_API void cv_get_param(ConfigParam&); //10 获取当前版本号,char*要空间足够,内部没有检测是否越界 TCV_API void get_version(char* buf); //11 找到抓取位置 // // 输入: // ImgInfo------- 输入 // posinfo ------- 输出 // fn ------------ 输入, points指向0,且fn可用时,读取文件中的数据(用于测试),仅支持ply格式 // //[0] tea_grab_x1; //第一株茶叶抓取位置x1, //[1] tea_grab_y1; //第一株茶叶抓取位置y1, //[2] tea_grab_angle1; //第一株茶叶抓取角度r1, //[3] tea_grab_x2; //第二株茶叶抓取位置x2, //[4] tea_grab_y2; //第二株茶叶抓取位置y2, //[5] tea_grab_angle2; //第二株茶叶抓取角度r2, //[6] tea_cut_x1; //第一株茶叶切割位置x1, //[7] tea_cut_y1; //第一株茶叶切割位置y1, //[8] tea_cut_angle1; //第一株茶叶切割角度r1, //[9] tea_cut_x2; //第二株茶叶切割位置x2, //[10] tea_cut_y2; //第二株茶叶切割位置y2, //[11] tea_cut_angle2; //第二株茶叶切割角度r2, // 如果为0,则不存在 // posinfo.pp_images; // // 返回: // 0 - 正常,识别到目标; // 1 - 无算法结果(相机范围内有苗,但是算法没能识别到可以抓取的苗,告诉嵌入式需要抖动), // -1 - 拍照无苗(相机范围内无苗,告诉嵌入式需要上料) // 2 - 算法异常失败 TCV_API int tea_grab_point(ImgInfo*, PositionInfo& posinfo, const char* fn=0); //12 找到切割位置 // // 输入: // ImgInfo------- 输入 // posinfo ------- 输出 // fn ------------ 输入, points指向0,且fn可用时,读取文件中的数据(用于测试),仅支持ply格式 // //[0] tea_grab_x1; //第一株茶叶抓取位置x1, //[1] tea_grab_y1; //第一株茶叶抓取位置y1, //[2] tea_grab_angle1; //第一株茶叶抓取角度r1, //[3] tea_grab_x2; //第二株茶叶抓取位置x2, //[4] tea_grab_y2; //第二株茶叶抓取位置y2, //[5] tea_grab_angle2; //第二株茶叶抓取角度r2, //[6] tea_cut_x1; //第一株茶叶切割位置x1, //[7] tea_cut_y1; //第一株茶叶切割位置y1, //[8] tea_cut_angle1; //第一株茶叶切割角度r1, //[9] tea_cut_x2; //第二株茶叶切割位置x2, //[10] tea_cut_y2; //第二株茶叶切割位置y2, //[11] tea_cut_angle2; //第二株茶叶切割角度r2, // 如果为0,则不存在 // posinfo.pp_images; // // 返回: 0- 正常,识别到目标; 1- 算法异常失败 或 没有识别到目标 TCV_API int tea_cut_point(ImgInfo*, PositionInfo& posinfo, const char* fn = 0); //13 // 棋盘格角点识别 TCV_API int chessboard_corners( ImgInfo*, //输入,图像数据 PositionInfo& posinfo, //输出,结果数据,没有用 int corner_row, //输入,棋盘格角点行数 int corner_col, //输入,棋盘格角点列数 int x0, //输入,棋盘格在图像中的左上x int y0, //输入,棋盘格在图像中的左上y int width, //输入,棋盘格在图像中的x方向宽度 int height, //输入,棋盘格在图像中的y方向高度 const char* fn = 0); //输入,棋盘格在图像文件,用于测试,默认不用 };//namespace tea_cv #ifdef __cplusplus } #endif