|
|
#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 对话框
|
|
|
};
|
|
|
|