⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gainps.cpp

📁 又VC++实现的基于TWAIN的扫描仪图像输入处理软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	Def_Stp_Para[i+8]	=LOBYTE(m_GB3);
	
	Def_Stp_Para[i+9]	=LOBYTE(m_GR4);		//CCD4
	Def_Stp_Para[i+10]	=LOBYTE(m_GG4);
	Def_Stp_Para[i+11]	=LOBYTE(m_GB4);
	
	Def_Stp_Para[i+12]	=LOBYTE(m_GR5);		//CCD5
	Def_Stp_Para[i+13]	=LOBYTE(m_GG5);
	Def_Stp_Para[i+14]	=LOBYTE(m_GB5);
	
	//增益范围
	i=150+88;
	Def_Stp_Para[i+0]	=LOBYTE(m_GanR1);		//CCD1
	Def_Stp_Para[i+1]	=LOBYTE(m_GanR2);		//CCD2
	Def_Stp_Para[i+2]	=LOBYTE(m_GanR3);		//CCD3
	Def_Stp_Para[i+3]	=LOBYTE(m_GanR4);		//CCD4
	Def_Stp_Para[i+4]	=LOBYTE(m_GanR5);		//CCD5

	//将输入的参数变量值写入Def_Stp_Para缓冲区,以供校正下传用
	i=150+120;
	Def_Stp_Para[i+3]	=LOBYTE(m_PSMax+100);		//最大值
	Def_Stp_Para[i+4]	=LOBYTE(m_PSMin+100);		//最小值

	Def_Stp_Para[i+0]	=LOBYTE(m_ZTPSR+100);		//整体偏色系数
	Def_Stp_Para[i+1]	=LOBYTE(m_ZTPSG+100);
	Def_Stp_Para[i+2]	=LOBYTE(m_ZTPSB+100);
	
	i=150+96;
    Def_Stp_Para[i+0]	=LOBYTE(m_PSR1+100);		//CCD1
	Def_Stp_Para[i+1]	=LOBYTE(m_PSG1+100);
	Def_Stp_Para[i+2]	=LOBYTE(m_PSB1+100);
	
    Def_Stp_Para[i+3]	=LOBYTE(m_PSR2+100);		//CCD2
	Def_Stp_Para[i+4]	=LOBYTE(m_PSG2+100);
	Def_Stp_Para[i+5]	=LOBYTE(m_PSB2+100);
	
    Def_Stp_Para[i+6]	=LOBYTE(m_PSR3+100);		//CCD3
	Def_Stp_Para[i+7]	=LOBYTE(m_PSG3+100);
	Def_Stp_Para[i+8]	=LOBYTE(m_PSB3+100);
	
    Def_Stp_Para[i+9]	=LOBYTE(m_PSR4+100);		//CCD4
	Def_Stp_Para[i+10]	=LOBYTE(m_PSG4+100);
	Def_Stp_Para[i+11]	=LOBYTE(m_PSB4+100);
	
    Def_Stp_Para[i+12]	=LOBYTE(m_PSR5+100);		//CCD5
	Def_Stp_Para[i+13]	=LOBYTE(m_PSG5+100);
	Def_Stp_Para[i+14]	=LOBYTE(m_PSB5+100);
	
	Step_Cali(Cu_Jin);	//下传底层增益及偏色初始获取操作命令包并获取显示校正效果参数

	//用从底层获取的校正参数值更新增益及偏色参数变量值
	m_GainCode=(Def_Stp_Para[152]<<8) | (Def_Stp_Para[153]);

	i=150+64;							//静态增益
	m_GR1=Def_Stp_Para[i+0];
	m_GG1=Def_Stp_Para[i+1];
	m_GB1=Def_Stp_Para[i+2];
   
	m_GR2=Def_Stp_Para[i+3];
	m_GG2=Def_Stp_Para[i+4];
	m_GB2=Def_Stp_Para[i+5];
   
	m_GR3=Def_Stp_Para[i+6];
	m_GG3=Def_Stp_Para[i+7];
	m_GB3=Def_Stp_Para[i+8];
   
	m_GR4=Def_Stp_Para[i+9];
	m_GG4=Def_Stp_Para[i+10];
	m_GB4=Def_Stp_Para[i+11];
   
	m_GR5=Def_Stp_Para[i+12];
	m_GG5=Def_Stp_Para[i+13];
	m_GB5=Def_Stp_Para[i+14];
   
	//增益范围
	i=150+88;
	m_GanR1=Def_Stp_Para[i+0];		//CCD1
	m_GanR2=Def_Stp_Para[i+1];		//CCD2
	m_GanR3=Def_Stp_Para[i+2];		//CCD3
	m_GanR4=Def_Stp_Para[i+3];		//CCD4
	m_GanR5=Def_Stp_Para[i+4];		//CCD5

	i=150+120;
	m_ZTPSR=Def_Stp_Para[i+0]-100;		//整体偏色系数
	m_ZTPSG=Def_Stp_Para[i+1]-100;
	m_ZTPSB=Def_Stp_Para[i+2]-100;

	i=150+96;								//偏色系数
	m_PSR1=Def_Stp_Para[i+0]-100;
	m_PSG1=Def_Stp_Para[i+1]-100;
	m_PSB1=Def_Stp_Para[i+2]-100;
   
	m_PSR2=Def_Stp_Para[i+3]-100;
	m_PSG2=Def_Stp_Para[i+4]-100;
	m_PSB2=Def_Stp_Para[i+5]-100;
   
	m_PSR3=Def_Stp_Para[i+6]-100;
	m_PSG3=Def_Stp_Para[i+7]-100;
	m_PSB3=Def_Stp_Para[i+8]-100;
   
	m_PSR4=Def_Stp_Para[i+9]-100;
	m_PSG4=Def_Stp_Para[i+10]-100;
	m_PSB4=Def_Stp_Para[i+11]-100;
   
	m_PSR5=Def_Stp_Para[i+12]-100;
	m_PSG5=Def_Stp_Para[i+13]-100;
	m_PSB5=Def_Stp_Para[i+14]-100;

	m_TSH ="请修改增益及偏色参数或选择相关操作.........";
	UpdateData(false);  //将本过程内的变量值变化导出本过程,更新显示

}

//////////////////////////////////////
//增益及偏色设置窗口——参数保存函数	//
//////////////////////////////////////
void CGainPS::OnSave() 
{
    UpdateData(true); //将本过程外的变量值变化导入本过程

    int GangCode=GetPrivateProfileInt("CCD_Gang_Dly","GangCode",500,InitDir2);
    int GainCMAX=GetPrivateProfileInt("CCD_Gain","GainCMAX",980,InitDir2);

	//对输入的参数值进行有效性检查(不小于感光目标码且不大于980)
	if (m_GainCode<GangCode) m_GainCode=GangCode;
		else if (m_GainCode>GainCMAX) m_GainCode=GainCMAX;
	
    RGB_Check(&m_GR1,&m_GG1,&m_GB1,0,0x1f);	//对静态增益输入值R、G、B进行范围(0~0x1f)检查
    RGB_Check(&m_GR2,&m_GG2,&m_GB2,0,0x1f);	//对静态增益输入值R、G、B进行范围(0~0x1f)检查
    RGB_Check(&m_GR3,&m_GG3,&m_GB3,0,0x1f);	//对静态增益输入值R、G、B进行范围(0~0x1f)检查
    RGB_Check(&m_GR4,&m_GG4,&m_GB4,0,0x1f);	//对静态增益输入值R、G、B进行范围(0~0x1f)检查
    RGB_Check(&m_GR5,&m_GG5,&m_GB5,0,0x1f);	//对静态增益输入值R、G、B进行范围(0~0x1f)检查

    R_Check(&m_GanR1,1,4);	//对增益范围输入值进行范围(1~4)检查
    R_Check(&m_GanR2,1,4);
    R_Check(&m_GanR3,1,4);
    R_Check(&m_GanR4,1,4);
    R_Check(&m_GanR5,1,4);

	//偏色系数在显示和输入时为原始值,在jiaose.ini文件中也为原始值。
	//在Def_Stp_Para缓冲区中保存的及下传的为偏移之后的正数。
	//偏色系数的最大值取决于增益目标码m_GainCode,即Max_Lim=(1-(1024÷m_GainCode))×100

    RGB_Check(&m_PSR1,&m_PSG1,&m_PSB1,m_PSMin,m_PSMax);	//对偏色系数输入值进行范围(m_PSMin~m_PSMax)检查
    RGB_Check(&m_PSR2,&m_PSG2,&m_PSB2,m_PSMin,m_PSMax);	//对偏色系数输入值进行范围(m_PSMin~m_PSMax)检查
    RGB_Check(&m_PSR3,&m_PSG3,&m_PSB3,m_PSMin,m_PSMax);	//对偏色系数输入值进行范围(m_PSMin~m_PSMax)检查
    RGB_Check(&m_PSR4,&m_PSG4,&m_PSB4,m_PSMin,m_PSMax);	//对偏色系数输入值进行范围(m_PSMin~m_PSMax)检查
    RGB_Check(&m_PSR5,&m_PSG5,&m_PSB5,m_PSMin,m_PSMax);	//对偏色系数输入值进行范围(m_PSMin~m_PSMax)检查

    RGB_Check(&m_ZTPSR,&m_ZTPSG,&m_ZTPSB,m_PSMin,m_PSMax);	//对偏色系数输入值进行范围(m_PSMin~m_PSMax)检查

	m_TSH = _T("");
	UpdateData(false);  //将本过程内的变量值变化导出本过程,更新显示

	if (IDNO == MessageBox("是否将当前增益及偏色参数保存到参数文件?","确认",MB_YESNO))
		{
			m_TSH = _T("请修改增益和偏色参数或选择相关操作.........");
			UpdateData(false);  //将本过程内的变量值变化导出本过程,更新显示
			return;
		}

	char str[36];

	//保存静态增益参数到参数文件
	sprintf(str, "%d", m_GainCode);
	WritePrivateProfileString("CCD_Gain","GainCode", str, InitDir2); 

	sprintf(str, "%d", m_GR1);
	WritePrivateProfileString("CCD_Gain","R1", str, InitDir2); 
	sprintf(str, "%d", m_GG1);
	WritePrivateProfileString("CCD_Gain","G1", str, InitDir2); 
	sprintf(str, "%d", m_GB1);
	WritePrivateProfileString("CCD_Gain","B1", str, InitDir2); 

	sprintf(str, "%d", m_GR2);
	WritePrivateProfileString("CCD_Gain","R2", str, InitDir2); 
	sprintf(str, "%d", m_GG2);
	WritePrivateProfileString("CCD_Gain","G2", str, InitDir2); 
	sprintf(str, "%d", m_GB2);
	WritePrivateProfileString("CCD_Gain","B2", str, InitDir2); 

	sprintf(str, "%d", m_GR3);
	WritePrivateProfileString("CCD_Gain","R3", str, InitDir2); 
	sprintf(str, "%d", m_GG3);
	WritePrivateProfileString("CCD_Gain","G3", str, InitDir2); 
	sprintf(str, "%d", m_GB3);
	WritePrivateProfileString("CCD_Gain","B3", str, InitDir2); 

	sprintf(str, "%d", m_GR4);
	WritePrivateProfileString("CCD_Gain","R4", str, InitDir2); 
	sprintf(str, "%d", m_GG4);
	WritePrivateProfileString("CCD_Gain","G4", str, InitDir2); 
	sprintf(str, "%d", m_GB4);
	WritePrivateProfileString("CCD_Gain","B4", str, InitDir2); 

	sprintf(str, "%d", m_GR5);
	WritePrivateProfileString("CCD_Gain","R5", str, InitDir2); 
	sprintf(str, "%d", m_GG5);
	WritePrivateProfileString("CCD_Gain","G5", str, InitDir2); 
	sprintf(str, "%d", m_GB5);
	WritePrivateProfileString("CCD_Gain","B5", str, InitDir2); 

	//保存增益范围
	sprintf(str, "%d", m_GanR1);
	WritePrivateProfileString("CCD_Gan_Range","CCD1", str, InitDir2); 
	sprintf(str, "%d", m_GanR2);
	WritePrivateProfileString("CCD_Gan_Range","CCD2", str, InitDir2); 
	sprintf(str, "%d", m_GanR3);
	WritePrivateProfileString("CCD_Gan_Range","CCD3", str, InitDir2); 
	sprintf(str, "%d", m_GanR4);
	WritePrivateProfileString("CCD_Gan_Range","CCD4", str, InitDir2); 
	sprintf(str, "%d", m_GanR5);
	WritePrivateProfileString("CCD_Gan_Range","CCD5", str, InitDir2); 

	//保存偏色系数参数到参数文件
	sprintf(str, "%d", m_PSMin);			//最小值(偏移PS_Def后写入)
	WritePrivateProfileString("CCD_PSAdj","Ps_Min", str, InitDir2); 
	sprintf(str, "%d", m_PSMax);			//最大值(偏移PS_Def后写入)
	WritePrivateProfileString("CCD_PSAdj","Ps_Max", str, InitDir2); 

	sprintf(str, "%d", m_ZTPSR);			//整体
	WritePrivateProfileString("CCD_PSAdj","ZTR", str, InitDir2); 
	sprintf(str, "%d", m_ZTPSG);
	WritePrivateProfileString("CCD_PSAdj","ZTG", str, InitDir2); 
	sprintf(str, "%d", m_ZTPSB);
	WritePrivateProfileString("CCD_PSAdj","ZTB", str, InitDir2); 

	sprintf(str, "%d", m_PSR1);			//CDD1
	WritePrivateProfileString("CCD_PSAdj","R1", str, InitDir2); 
	sprintf(str, "%d", m_PSG1);
	WritePrivateProfileString("CCD_PSAdj","G1", str, InitDir2); 
	sprintf(str, "%d", m_PSB1);
	WritePrivateProfileString("CCD_PSAdj","B1", str, InitDir2); 

	sprintf(str, "%d", m_PSR2);
	WritePrivateProfileString("CCD_PSAdj","R2", str, InitDir2); 
	sprintf(str, "%d", m_PSG2);
	WritePrivateProfileString("CCD_PSAdj","G2", str, InitDir2); 
	sprintf(str, "%d", m_PSB2);
	WritePrivateProfileString("CCD_PSAdj","B2", str, InitDir2); 

	sprintf(str, "%d", m_PSR3);
	WritePrivateProfileString("CCD_PSAdj","R3", str, InitDir2); 
	sprintf(str, "%d", m_PSG3);
	WritePrivateProfileString("CCD_PSAdj","G3", str, InitDir2); 
	sprintf(str, "%d", m_PSB3);
	WritePrivateProfileString("CCD_PSAdj","B3", str, InitDir2); 

	sprintf(str, "%d", m_PSR4);
	WritePrivateProfileString("CCD_PSAdj","R4", str, InitDir2); 
	sprintf(str, "%d", m_PSG4);
	WritePrivateProfileString("CCD_PSAdj","G4", str, InitDir2); 
	sprintf(str, "%d", m_PSB4);
	WritePrivateProfileString("CCD_PSAdj","B4", str, InitDir2); 

	sprintf(str, "%d", m_PSR5);
	WritePrivateProfileString("CCD_PSAdj","R5", str, InitDir2); 
	sprintf(str, "%d", m_PSG5);
	WritePrivateProfileString("CCD_PSAdj","G5", str, InitDir2); 
	sprintf(str, "%d", m_PSB5);
	WritePrivateProfileString("CCD_PSAdj","B5", str, InitDir2); 

	m_TSH = _T("请修改增益和偏色参数或选择相关操作.........");
	UpdateData(false);  //将本过程内的变量值变化导出本过程,更新显示
}

void CGainPS::OnCancel() 
{
	m_TSH = _T("");
	UpdateData(false);  //将本过程内的变量值变化导出本过程,更新显示

/*
	if (IDNO == MessageBox("是否关闭静态增益与偏色校正窗口?","确认",MB_YESNO))
		{
			m_TSH = _T("请修改增益和偏色参数或选择相关操作.........");
			UpdateData(false);  //将本过程内的变量值变化导出本过程,更新显示
			return;
		}
*/

	Stp_GanPs_INI();	//初始化Def_Stp_Para数组中的静态增益及偏色系数参数

	CDialog::OnCancel();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -