#pragma once // 包含情报结构体文件 #include "QBStru.h" // 回调函数定义 #include "CallBackDef.h" // 声明 图像显示对话框类 class CImgShowDlg; class AFX_CLASS_EXPORT CExportImgShowBase: public CObject { public: // 构造函数 CExportImgShowBase(void); // 析构函数 ~CExportImgShowBase(void); public: /************************************************************************/ /* part 1:窗口创建、销毁、图像显示、标注等 */ /************************************************************************/ // 1 功能:创建视频显示窗口 // 输入: // 1. hParentWnd: 父窗口句柄 // // 输出:创建成功返回TRUE,否则返回FALSE BOOL CreateWnd(const HWND hParentWnd); // 2 功能:移动(设置)窗口(整个视频显示窗口)至指定位置 // 输入: // 1. clientRect:移动至该区域 // // 输出:无 void MoveWnd(const CRect &clientRect); // 3 功能:显示SW_SHOW 或隐藏 SW_HIDE 窗口 // 输入: // 1. nCmdShow:SW_SHOW 或 SW_HIDE // // 输出:无 void ShowWnd(const int nCmdShow); // 4 功能:显示一帧图像 // 输入: // 1. pImgInfo:图像信息头 // 2. pImgData:图像数据指针 // 3. LBbox:经纬度盒子 // 4 isNeedFlip: 是否需要反转 // 5. isNeedClip:是否需要裁剪标识 // 6. ShowRegion:裁剪区域 // 7. Strecth_Ratio 图像拉伸比例,默认为1,即填满屏幕 // 8. 图像平移控制 // // 输出:显示成功返回TRUE,否则返回FALSE // 说明:信号1 BOOL ShowImage(const BITMAPINFO* pImgInfo, BYTE* pImgData, GeoBoundingBox LBbox = GeoBoundingBox(), BOOL isNeedFlip = FALSE, BOOL isNeedClip = FALSE, const CRect* pShowRegion = NULL, float Strecth_Ratio = 1.0F, POINT xyShift = POINT()); // 5 功能:显示并处理通用情报数据 // 输入: // 1.qbData: 情报数据结构体变量指针 // // 输出: 无 // 说明:信号2 // 注意:信号1优先级 > 信号2优先级 void DisposeQBData(const QBStru* qbData); // 6 功能:标绘目标,其中输入为目标点像素坐标 // 输入: // 1. pt:目标点像素坐标 // // 输出:在窗口标绘目标 // 注意事项:如果输入图像同时,对目标进行标绘,需要在 函数4(ShowImage)输入之后 输入本函数 void SetTargetPixelCoordinate(const CPoint &pt); // 6.1 功能:标绘图像中的一块区域,其中输入为4个像素坐标点 // 输入: // 1. pt:4个角点像素坐标 // // 输出:在窗口标绘目标 // 注意事项:如果输入图像同时,对目标进行标绘,需要在 函数4(ShowImage)输入之后 输入本函数 void SetQuadrangleCorners(const POINT *pts); // 6.2 功能:标绘目标,其中输入为经纬度坐标 // 输入: // 1. pt:经纬度坐标 // // 输出:在窗口标绘目标 // 注意事项:如果输入图像同时,对目标进行标绘,需要在 函数4(ShowImage)输入之后 输入本函数 void SetTgtLocLeadLonLat(double lon, double lat); // 7 功能:删除视频显示窗口,同时释放所有占用资源 // 输入:无 // // 输出:无 void DestroyWnd(); // 8 功能:清理内存及记忆 // 输入:无 // // 输出:无 void ClearMemory(); /************************************************************************/ /* part 2:设置回调函数:像素点坐标、像素点信息、文件保存路径 */ /************************************************************************/ // 1 功能:设置回调函数,对外输出目标点像素坐标(目标点通过左键双击图像获得) // 输入: // 1. proc: 回调函数指针 // // 输出:设置成功返回TRUE,否则返回FALSE BOOL SetCallBackFun(SendCoordinateProc proc); // 2 功能:设置回调函数,像素信息传递到外部CSU中 // 输入: // 1.proc: 函数指针 // // 输出: 设置成功返回TRUE,否则返回FALSE BOOL SetCallBackFun(SendPixInfoProc proc); // 3 功能:设置回调函数,传递保存文件路径到外部CSU中 // 输入: // 1.proc: 函数指针 // // 输出: 设置成功返回TRUE,否则返回FALSE BOOL SetCallBackFun(SendFilePath proc); // 5 功能:设置回调函数,目标定位导引经纬度到外部CSU中 // 输入: // 1.proc: 函数指针 // // 输出: 设置成功返回TRUE,否则返回FALSE BOOL SetCallBackFun(SendTgrLocLeadLonLatProc proc); // 6 功能:设置回调函数,火炮校射信息输出到外部CSU中 // 输入: // 1.proc: 函数指针 // // 输出: 设置成功返回TRUE,否则返回FALSE BOOL SetCallBackFun(SendArtilleryReviseInfoProc proc); /************************************************************************/ /* part 3:图像处理:显示控制、处理控制、保存控制 */ /************************************************************************/ // 4 功能:通过鼠标滚轮,实现图像放大缩小 BOOL OnMouseWheelZoomInOutImg(UINT nFlags, short zDelta, CPoint pt); // 5 功能:取消目标标绘 void CancelTargetPlot(); // 6 功能:图像去雾 // 输入: // 1. bAdjust 是否调节 // 2. A_MAX 控制去雾效果, A_MAX < 0 时,自适应计算(特别耗时); // 有效范围【0,255】 异常值自适应; // 3. degree 控制去雾效果, 有效范围【0,1】 异常值自适应 // 输出:无 void AdjustImgDehaze(BOOL bAdjust = FALSE, int A_MAX = -1, double degree = 0.78); // 7 功能:图像亮度调节 // 输入: // 1. bAdjust 是否调节 // 2. degree 调节力度[0 20] // 输出:无 void AdjustImgIntensity(BOOL bAdjust = FALSE, int degree = 10); // 8 功能:图像对比度调节 // 输入: // 1. bAdjust 是否调节 // 2. degree 调节力度[0 20] // 输出:无 void AdjustImgContrast(BOOL bAdjust = FALSE, int degree = 10); // 9 功能:图像清晰度调节 // 输入: // 1. bAdjust 是否调节 // 2. degree 调节力度[0 20] // 输出:无 void AdjustImgDefinition(BOOL bAdjust = FALSE, int degree = 10); // 10 功能:返回图像调节上一步图像状态,显示上一次处理图像 void ReturnToPreImgState(); // 11 功能:返回原始图像状态,显示原始图像 void ReturnToSrcImgState(); // 12 功能:保存当前图像几何校正,并保存为TIFF格式 void SaveImgToTiff(); // 13 功能:保存当前帧至本地文件 // 输入: // 1. sSaveFolder 图像存储文件夹,为空或找不到时,按默认存储路径存储 // 说明:图像命名规则见设计文档 void SaveCurrentFrame(CString sSaveFolder = ""); // 14 功能:是否需要记忆前面多帧(18帧)图像信息 // 输入: // 1. bMem TRUE:记忆 FALSE:不记忆 // 输出:无 void MemPreMultiFrame(BOOL bMem = TRUE); // 18 功能:设置图像编辑类型 // 输入: // 1. type : 1:定位标记 // 2: 文字标记 // 3: 火炮校射标记 // 其他值,无效 void SetImgEditType(int type); // 19 功能:获取图像编辑模式 // 输入:无 // 返回: // true: 图像增强模式 // false:图像标记模式 bool GetImgEditMode(); // 21 功能:几何校正图像并显示图像 void GeoCorrectAndShowImg(); // 22 功能:获取当前显示图像 // 输入: // 输出: // 1:imgWidth 图像宽 // 2:imgHeight 图像高 // 3:bitCount 图像位数 // 4:pImgData 图像数据指针 // 返回值: // 成功返回true,失败返回false bool GetCurrentImg(int &imgWidth, int &imgHeight, int& bitCount, uchar* &pImgData); // 23 功能:获取图像边界地理坐标 // 输入: // 输出: // 1:leftLon 西经 // 2:topLat 北纬 // 3:rigtLon 东经 // 4:bottomLat 南纬 // 返回值: // 成功返回true,失败返回false bool GetImgBoundingBox(double &leftLon, double &topLat, double &rigtLon, double &bottomLat); // 24 功能:获取当前显示图像中心经纬度 // 输入: // 输出: // 1:lon 经度 // 2:lat 纬度 // 返回值: // 成功返回true,失败返回false bool GetCurrentImgCerterLonLat(double &lon, double &lat); // 25 功能:标注图像(矩形、区域边缘) // 输入: // 1. 区域边缘点 集合 void MarkRegionOnImg(std::vector<std::vector<cv::Point>> &valisContours); // 26 功能:屏蔽右键菜单 // 输入: // 1. bClose 默认true关闭 void CloseRightBtnDownMenu(bool bClose = true); // 27 功能:设置空屏文字 // 输入: // 1. str 主题文字 void SetThemeText(CString str); // 28 功能:图像位置导引(同内部目标定位导引) void LeadImgLoc(); private: CImgShowDlg* m_ShowDlg; // MFC 对话框 };