/*
	功能:图像亮度调节
	设计者:王家星
	修改时间:2015 05 15
*/

#pragma once
#include "stdafx.h"

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

// OpenCV
#include <opencv2\opencv.hpp>  
using namespace cv;



// 1. OpenCV结构下的图像亮度控制
//功能:图像亮度控制(OpenCV结构)
//输入:	1. src 输入图像
//		    2. degree 控制亮度,有效范围【0,20】,值越小越暗,越大越亮

//输出:	1. dst 输出图像
//          2. 返回值:处理成功返回true,失败返回false
bool cvMatIntensityControl(cv::Mat& src, cv::Mat& dst, int degree = 10);




// 2. ImgStru结构下的图像亮度控制
//功能:图像亮度控制(ImgStru结构)
//输入:	1. src 输入图像结构体
//		    2. degree 控制亮度,有效范围【0,20】,值越小越暗,越大越亮

//输出:	1. dst 输出图像结构体
//          2. 返回值:处理成功返回true,失败返回false
bool ImgStruIntensityControl(ImgStru* src, ImgStru* dst, int degree = 10);




// 3. 通用情报结构体下的图像亮度控制
//功能:图像亮度控制(QBStru结构)
//输入:	1. qbData 通用情报数据结构体
//		    2. degree 控制亮度, 有效范围【0,20】,值越小越暗,越大越亮
//          3. bSrcFirst 默认时,优先处理srcImg, srcImg-->dstImg
//                       否则,优先处理dstImg,dstImg——>dstImg                         

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