#pragma once
#include "stdafx.h"

// 作者:王家星 2015/01/13

// 情报数据通用结构
#include "QBStru.h"

#include "OpencvImgShell.h"



// 简称:Intensity Contrast Defination = ICD 

//功能:图像亮度+对比度+清晰度控制
//输入:	1. qbData 通用情报数据结构体
//		    2. Idegree 控制亮度, 有效范围【0,20】,值越小越暗,越大越亮
//          3. Cdegree 控制对比度, 有效范围【0,20】,值越小对比度越弱,越大对比度越强
//          4. Ddegree 控制清晰度, 有效范围【0,20】,值越小越模糊,越大越清晰
//          5. bSrcFirst 默认时,优先处理srcImg, srcImg-->dstImg
//                       否则,优先处理dstImg,dstImg——>dstImg                         

//输出:	1. qbData 含变化后图像的情报数据结构体
//          2. 返回值:处理成功返回TRUE,失败返回FALSE
//说明: 首先判断图像数据有效性标识位,无效时直接返回,不做任何处理;
extern BOOL QBStru_ICD_Control(QBStru *qbData, int Idegree = 10, int Cdegree = 10, int Ddegree = 10, BOOL bSrcFirst = TRUE);


// ImgStru结构下的图像亮度对比度清晰度控制

//功能:图像亮度对比度清晰度控制(函数重载)
//输入:	1. src 输入图像结构体
//		    2. Idegree 控制亮度, 有效范围【0,20】,值越小越暗,越大越亮
//          3. Cdegree 控制对比度, 有效范围【0,20】,值越小对比度越弱,越大对比度越强
//          4. Ddegree 控制清晰度, 有效范围【0,20】,值越小越模糊,越大越清晰

//输出:	1. dst 输出图像结构体
//          2. 返回值:处理成功返回TRUE,失败返回FALSE
extern BOOL ImgStru_ICD_Control(ImgStru* src, ImgStru* dst, int Idegree = 10, int Cdegree = 10, int Ddegree = 10);


// OpenCV结构下的图像亮度对比度清晰度控制

//功能:图像亮度对比度清晰度控制
//输入:	1. src 输入图像
//		    2. Idegree 控制亮度, 有效范围【0,20】,值越小越暗,越大越亮
//          3. Cdegree 控制对比度, 有效范围【0,20】,值越小对比度越弱,越大对比度越强
//          4. Ddegree 控制清晰度, 有效范围【0,20】,值越小越模糊,越大越清晰

//输出:	1. dst 输出图像
//          2. 返回值:处理成功返回TRUE,失败返回FALSE
extern BOOL IplImage_ICD_Control(IplImage* src, IplImage* dst, int Idegree = 10, int Cdegree = 10, int Ddegree = 10);