|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "afxcoll.h"
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
#include "CxImage/CxImage/ximage.h"
|
|
|
|
|
|
#include "..\Xy.h"
|
|
|
|
|
|
|
|
|
|
|
|
struct ColorPoint {
|
|
|
|
|
|
int R;
|
|
|
|
|
|
int G;
|
|
|
|
|
|
int B;
|
|
|
|
|
|
double zValue;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS GenerateImageMesh
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
enum ColorMethod {
|
|
|
|
|
|
HSV_M = 0, //HSV<53><56><EFBFBD>˷<EFBFBD><CBB7><EFBFBD>
|
|
|
|
|
|
UNIFORMSAMPLING_M = 1, //<2F><><EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
KMEANS_M = 2 //K-Means<6E><73><EFBFBD><EFBFBD><E0B7BD>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
enum SortMethod {
|
|
|
|
|
|
BRIGHTNESS_SORT = 0, //<2F><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)
|
|
|
|
|
|
HUE_SORT_COLD = 1, //ɫ<><C9AB><EFBFBD><EFBFBD>
|
|
|
|
|
|
HUE_SORT_WARM = 2, //ɫ<><C9AB>ů
|
|
|
|
|
|
HUE_SORT = 3
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
GenerateImageMesh();
|
|
|
|
|
|
~GenerateImageMesh();
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SetImageBase(CxImage image);
|
|
|
|
|
|
void SetImageBase(const std::string& path);
|
|
|
|
|
|
std::string GetImagePath();
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>(Ĭ<><C4AC>ɫ<EFBFBD><C9AB>)
|
|
|
|
|
|
void SetColorCardPath(const std::string& path);
|
|
|
|
|
|
std::string GetColorCardPath();
|
|
|
|
|
|
void SetGridNumber(int num);
|
|
|
|
|
|
int GetGridNumber();
|
|
|
|
|
|
void SetZminByZmax(double zMin, double zMax);
|
|
|
|
|
|
double GetZmin();
|
|
|
|
|
|
double GetZmax();
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD>ʣ<EFBFBD>Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䵽ů<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \param colorVectors <EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>zֵ<EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>zֵ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* \param ColorMethod <EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
* \param SortMethod <EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
|
|
|
|
|
|
* \param numColors <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* \return
|
|
|
|
|
|
*/
|
|
|
|
|
|
bool CreateColorBarData(std::vector<ColorPoint>& colorPVector, GenerateImageMesh::ColorMethod type, GenerateImageMesh::SortMethod sortType, int numColors = 5);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* \param colorVector <EFBFBD><EFBFBD>ɫ<EFBFBD><EFBFBD>zֵ<EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>zֵ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
* \param barSavePath ɫ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \param xmlPath ɫ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>xml
|
|
|
|
|
|
* \param width ɫ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ͼƬ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \param height ɫ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ͼƬ<EFBFBD><EFBFBD>
|
|
|
|
|
|
* \return
|
|
|
|
|
|
*/
|
|
|
|
|
|
bool CreateMeshColorBar(const std::vector<ColorPoint>& colorVector, const std::string& barSavePath, double minz, double maxz,
|
|
|
|
|
|
const std::string& xmlPath = "", int width = 1200, int height = 60);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMesh * CreateImageMeshProcess(int numX, int numY
|
|
|
|
|
|
, double dLocationX, double dLocationY
|
|
|
|
|
|
, double dDeltX, double dDeltY, double dmaxX, double dmaxY
|
|
|
|
|
|
, const std::vector<ColorPoint>& colorVector, const std::vector<ColorPoint>& colorListVector);
|
|
|
|
|
|
|
|
|
|
|
|
bool CreateImageMesh(int numX, int numY
|
|
|
|
|
|
, double dLocationX, double dLocationY, double dDeltX, double dDeltY , double dmaxX, double dmaxY,
|
|
|
|
|
|
const std::vector<ColorPoint>& colorVector);
|
|
|
|
|
|
|
|
|
|
|
|
double FindThirdValues(const std::vector<std::tuple<int, int, double>>& data,
|
|
|
|
|
|
int first, int second);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void Init();
|
|
|
|
|
|
|
|
|
|
|
|
bool LaodImageCV();//<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
private:
|
|
|
|
|
|
int m_num; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>10 10*10<31><30>
|
|
|
|
|
|
double m_zMinCV; //<2F>ʼ<EEBFAA><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
|
double m_zMaxCV;
|
|
|
|
|
|
|
|
|
|
|
|
std::string m_colorCardPath; //<2F><>ɫ<EFBFBD><C9AB>
|
|
|
|
|
|
std::string m_imagePath; //ͼ<><CDBC>
|
|
|
|
|
|
|
|
|
|
|
|
CxImage m_xImage; //<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
CMesh *p_mesh;
|
|
|
|
|
|
};
|