灰度出图调整

This commit is contained in:
modehua 2023-08-10 22:54:42 -07:00
parent 3d6b21f8b4
commit 9164b459a6
15 changed files with 497 additions and 65 deletions

View File

@ -853,7 +853,7 @@ void HCamDevice::HtCamSwitchSampleModes(uint8_t mode)
pCamCtrlReg[4] |= (0x00020000);
}
void HCamDevice::HtCamChangeExposureValue(uint32_t value)
void HCamDevice::HtCamChangeExposureValueF(uint32_t value)
{
if (virBaseAddr == NULL)
{
@ -869,8 +869,28 @@ void HCamDevice::HtCamChangeExposureValue(uint32_t value)
pCamCtrlReg[5] |= (uint32_t)(value << 16);
pCamCtrlReg[6] |= (uint32_t)(value); // GREEN
pCamCtrlReg[6] |= ((uint32_t)value << 16); // BLUE
}
void HCamDevice::HtCamChangeExposureValueB(uint32_t value)
{
if (virBaseAddr == NULL)
{
return ;
}
uint32_t *pCamCtrlReg = virBaseAddr;
// pCamCtrlReg[3] |= (uint32_t)(0x00006000);
pCamCtrlReg[11] = 0x00000000;
pCamCtrlReg[12] = 0x00000000;
pCamCtrlReg[11] |= (uint32_t)(value); // RED
pCamCtrlReg[11] |= (uint32_t)(value << 16);
pCamCtrlReg[12] |= (uint32_t)(value); // GREEN
pCamCtrlReg[12] |= ((uint32_t)value << 16); // BLUE
}
void HCamDevice::HtCamWriteADCReg(uint8_t addr, uint8_t data)
{
if (virBaseAddr == NULL)
@ -988,30 +1008,39 @@ void HCamDevice::HtCamSetSpTime(uint32_t reg_value)
{
CamZ_Reg_2Short sp_time;
sp_time.value = HtCamReadFpgaRegs(0x03);
sp_time.NShort;
sp_time.NShort[1] = reg_value;
sp_time.NShort[0] = reg_value-100;
HtCamWriteFpgaRegs(0x03 , sp_time.value);
}
void HCamDevice::HtCamGetSpTime(uint32_t &reg_value)
{
CamZ_Reg_2Short sp_time;
sp_time.value = HtCamReadFpgaRegs(0x03);
reg_value = sp_time.NShort[1];
}
void HCamDevice::HtCamSetStSp(int color)
void HCamDevice::HtCamSetStSp(int start_smaple)
{
//sp_time.NShort[1] = 0x00D0;//灰度
//sp_time.NShort[1] = 0x00C8;//彩色
CamZ_Reg_2Short st_sp;
st_sp.value = HtCamReadFpgaRegs(0x0d);
st_sp.NShort[0] = 0x0200;
if (color)
st_sp.NShort[1] = 0x00C8; //彩色
else
st_sp.NShort[1] = 0x00DC; //灰色 2023-8-3
// if (color)
// st_sp.NShort[1] = 0x00C8; //彩色
// else
// st_sp.NShort[1] = 0x00d0 //灰度 2023 8/10 0x00C8
HtCamWriteFpgaRegs(0x0d , st_sp.value);
st_sp.NShort[1] = start_smaple; //灰色 2023-8-3
//HtCamWriteFpgaRegs(0x0d , st_sp.value);
}
void HCamDevice::HtCamGetStSp(uint32_t &reg_value)
void HCamDevice::HtCamGetStSp(uint32_t &start_smaple)
{
reg_value = HtCamReadFpgaRegs(0x0d);
CamZ_Reg_2Short st_sp;
st_sp.value = HtCamReadFpgaRegs(0x0d);
start_smaple = st_sp.NShort[1];
}
void HCamDevice::HtCamSetVsnpTime(int color)
@ -1109,8 +1138,8 @@ void HCamDevice::HtCamSetClolr(int color)
reg_4.en_frameset = 1; //帧计数默认开启
HtCamWriteFpgaRegs(0x04,reg_4.value);
HtCamSetStSp(color);
HtCamSetVsnpTime(color);
// HtCamSetStSp(color);
// HtCamSetVsnpTime(color);
}

View File

@ -55,10 +55,15 @@ public:
void HtCamSetFrameCnt(uint32_t val);//设置需要采集的帧数
uint32_t HtCamReadFpgaRegs(uint8_t reg_addr); //读取寄存器值
void HtCamSetSpTime(uint32_t reg_value);//0x03 //内触发间隔 //影响到图像得拉伸
void HtCamGetSpTime(uint32_t &reg_value); //获取当前sptime
void HtCamSetStSp(int start_sample);//0x0d //更具不同的颜色模式设置不同的st_sp //影响到图像的偏移
void HtCamGetStSp(uint32_t &start_sample);
void HtCamSetVsnpTime(int color);
void HtCamChangeExposureValueF(unsigned int value); //曝光值设置
void HtCamChangeExposureValueB(unsigned int value); //曝光值设置
private:
int init_fpga(); //初始化 寄存器基地址
@ -70,18 +75,6 @@ private:
void HtCamWriteFpgaRegs(uint8_t reg_addr, uint32_t reg_value); //写寄存器
void HtCamSetSpTime(uint32_t reg_value);//0x03 //内触发间隔 //影响到图像得拉伸
void HtCamGetSpTime(uint32_t &reg_value); //获取当前sptime
void HtCamSetStSp(int color);//0x0d //更具不同的颜色模式设置不同的st_sp //影响到图像的偏移
void HtCamGetStSp(uint32_t &reg_value);
void HtCamSetVsnpTime(int color);
public:
HCamDevice();
~HCamDevice();
@ -124,7 +117,8 @@ private:
int init_dev();
void init_ps_regs();
void HtCamSwitchSampleModes(unsigned char mode);//测试数据
void HtCamChangeExposureValue(unsigned int value); //曝光值设置
void HtCamExitVideoCapturing();
void HtCamResizeBuffer(int width, int height, int number);
void HtCamChangeAdjustSpTime(uint32_t sp_time_gap, uint32_t sp_time_rw);

View File

@ -183,10 +183,19 @@ void MultiFrameCapture::UpdateScanParam(HG_ScanConfiguration config)
video->HtCamSetClolr(color_mode_);
video->HtCamSetDpi(resolution_);
printf(" -----------------------snap dpi = %d resolution = %d------------------\r\n",config.params.dpi, config.params.isColor);
FPGAConfigParam fpgaparam = GetFpgaparam(config.params.dpi, config.params.isColor);
video->HtCamSetSpTime(fpgaparam.Sp); // 2344 灰色 //2023-8-10 最新2650
// fpgaparam.Sp=0;
// video->HtCamGetSpTime(fpgaparam.Sp);
printf(" -----------------------HtCamSetSpTime%d------------------ \r\n",fpgaparam.Sp);
video->HtCamSetStSp(fpgaparam.MaxBright);
printf(" -----------------------HtCamSetStSp%d------------------\r\n",fpgaparam.MaxBright);
{
int val = resolution_ == 0 ? 600 : 300;
uint32_t cnt = compute_frame(paper_size_ , val) / HEIGHT + 1; //多设置一帧
int val = config.params.dpi == 3 ? 600 :(config.params.dpi == 2?300:200);
uint32_t cnt = compute_frame(paper_size_ , val) / HEIGHT + 1; //多设一帧
video->HtCamSetFrameCnt(cnt);
printf(" -----------------------设置帧数:%d------------------\r\n",cnt);
}
@ -560,7 +569,7 @@ void MultiFrameCapture::snaprun()
video->HtCamGetFrameCnt(frame_cnt);
frame_info.frame_index = frame_cnt;
int func_sig = 0;
int time_out = color_mode_ == 1 ? 1400 : 800;
int time_out = color_mode_ == 1 ? 800 : 800;
int time_out_cnt = 0;
printf("--------------------- frame_info.width ------------------ :%d\r\n",frame_info.width );

View File

@ -121,7 +121,7 @@ void Scanner::updateSpeedMode(int speed)
// }
//if(typeid(*capturer)==typeid(MultiFrameCapture))
//if(m_config.params.pageSize == 17 || m_config.params.pageSize == 19) //长文稿采用600dpi模式扫描
t_dpi = 2;
t_dpi = 1;
motorCuozhi.speedChange(m_scaninfo.SpeedMode, t_dpi,m_config.params.isColor);
motorZouzhi.speedChange(m_scaninfo.SpeedMode, t_dpi,m_config.params.isColor);
}

View File

@ -1010,6 +1010,14 @@ CorrectParam.h
mutex
-
/home/modehua/sdk/zynq_7010/CuoZhiMotor.h
Motor.h
/home/modehua/sdk/zynq_7010/Motor.h
thread
-
iostream
-
/home/modehua/sdk/zynq_7010/DevUtil.h
string
-
@ -1034,10 +1042,68 @@ Gpio.h
scanservices_utils.h
/home/modehua/sdk/zynq_7010/scanservices_utils.h
/home/modehua/sdk/zynq_7010/FsmState.cpp
FsmState.h
/home/modehua/sdk/zynq_7010/FsmState.h
Scanner.h
/home/modehua/sdk/zynq_7010/Scanner.h
/home/modehua/sdk/zynq_7010/FsmState.h
memory
-
map
-
typeinfo
-
string
-
scanservices_utils.h
/home/modehua/sdk/zynq_7010/scanservices_utils.h
utilsfunc.h
/home/modehua/sdk/zynq_7010/utilsfunc.h
/home/modehua/sdk/zynq_7010/Gpio.h
string
-
/home/modehua/sdk/zynq_7010/HCamDevice.cpp
HCamDevice.h
/home/modehua/sdk/zynq_7010/HCamDevice.h
stdint.h
-
thread
-
chrono
-
string
-
poll.h
-
sys/epoll.h
-
unistd.h
-
fcntl.h
-
sys/mman.h
-
sys/ioctl.h
-
string.h
-
CameraParams.h
/home/modehua/sdk/zynq_7010/CameraParams.h
linux/v4l2-subdev.h
-
iostream
-
errno.h
-
iostream
-
fstream
-
/home/modehua/sdk/zynq_7010/HCamDevice.h
string
-
@ -1054,6 +1120,12 @@ thread
map
-
/home/modehua/sdk/zynq_7010/HGUsb.h
memory
-
UsbEndpoint.h
/home/modehua/sdk/zynq_7010/UsbEndpoint.h
/home/modehua/sdk/zynq_7010/ICapturer.h
atomic
-
@ -1072,6 +1144,14 @@ HCamDevice.h
vector
-
/home/modehua/sdk/zynq_7010/IScanner.h
scanservices_utils.h
/home/modehua/sdk/zynq_7010/scanservices_utils.h
string
-
BlockingQueue.h
/home/modehua/sdk/zynq_7010/BlockingQueue.h
/home/modehua/sdk/zynq_7010/Jpegcompress.h
turbojpeg.h
-
@ -1094,6 +1174,72 @@ map
mutex
-
/home/modehua/sdk/zynq_7010/Keyboard.h
stdio.h
-
stdlib.h
-
unistd.h
-
fcntl.h
-
sys/ioctl.h
-
linux/input.h
-
sys/epoll.h
-
string.h
-
thread
-
time.h
-
condition_variable
-
functional
-
scanservices_utils.h
/home/modehua/sdk/zynq_7010/scanservices_utils.h
/home/modehua/sdk/zynq_7010/Led.h
DevUtil.h
/home/modehua/sdk/zynq_7010/DevUtil.h
/home/modehua/sdk/zynq_7010/MemoryInfo.h
/home/modehua/sdk/zynq_7010/Motor.h
Gpio.h
/home/modehua/sdk/zynq_7010/Gpio.h
Pwm.h
/home/modehua/sdk/zynq_7010/Pwm.h
vector
-
thread
-
iostream
-
scanservices_utils.h
/home/modehua/sdk/zynq_7010/scanservices_utils.h
utilsfunc.h
/home/modehua/sdk/zynq_7010/utilsfunc.h
exception
-
Motordef.h
/home/modehua/sdk/zynq_7010/Motordef.h
MotorConfig.h
/home/modehua/sdk/zynq_7010/MotorConfig.h
/home/modehua/sdk/zynq_7010/MotorConfig.h
vector
-
json.hpp
/home/modehua/sdk/zynq_7010/json.hpp
Motordef.h
/home/modehua/sdk/zynq_7010/Motordef.h
/home/modehua/sdk/zynq_7010/Motordef.h
/home/modehua/sdk/zynq_7010/MultiFrameCapture.cpp
MultiFrameCapture.h
/home/modehua/sdk/zynq_7010/MultiFrameCapture.h
@ -1144,6 +1290,90 @@ CorrectParam.h
IPreproc.h
/home/modehua/sdk/zynq_7010/IPreproc.h
/home/modehua/sdk/zynq_7010/PanelLeds.h
Led.h
/home/modehua/sdk/zynq_7010/Led.h
iostream
-
scanservices_utils.h
/home/modehua/sdk/zynq_7010/scanservices_utils.h
/home/modehua/sdk/zynq_7010/Pwm.h
string
-
/home/modehua/sdk/zynq_7010/Scanner.cpp
Scanner.h
/home/modehua/sdk/zynq_7010/Scanner.h
iostream
-
filetools.h
/home/modehua/sdk/zynq_7010/filetools.h
fpgacontrol.h
/home/modehua/sdk/zynq_7010/fpgacontrol.h
MemoryInfo.h
/home/modehua/sdk/zynq_7010/MemoryInfo.h
SysInforTool.h
/home/modehua/sdk/zynq_7010/SysInforTool.h
USBProtocol.h
/home/modehua/sdk/zynq_7010/USBProtocol.h
/home/modehua/sdk/zynq_7010/Scanner.h
memory
-
functional
-
CuoZhiMotor.h
/home/modehua/sdk/zynq_7010/CuoZhiMotor.h
ZouZhiMotor.h
/home/modehua/sdk/zynq_7010/ZouZhiMotor.h
Sensor.h
/home/modehua/sdk/zynq_7010/Sensor.h
PanelLeds.h
/home/modehua/sdk/zynq_7010/PanelLeds.h
BlockingQueue.h
/home/modehua/sdk/zynq_7010/BlockingQueue.h
FsmState.h
/home/modehua/sdk/zynq_7010/FsmState.h
MultiFrameCapture.h
/home/modehua/sdk/zynq_7010/MultiFrameCapture.h
scanservices_utils.h
/home/modehua/sdk/zynq_7010/scanservices_utils.h
Keyboard.h
/home/modehua/sdk/zynq_7010/Keyboard.h
utilsfunc.h
/home/modehua/sdk/zynq_7010/utilsfunc.h
filetools.h
/home/modehua/sdk/zynq_7010/filetools.h
SysInforTool.h
/home/modehua/sdk/zynq_7010/SysInforTool.h
MotorConfig.h
/home/modehua/sdk/zynq_7010/MotorConfig.h
correct_ultis.h
/home/modehua/sdk/zynq_7010/correct_ultis.h
FpgaComm.h
/home/modehua/sdk/zynq_7010/FpgaComm.h
/home/modehua/sdk/zynq_7010/Sensor.h
Gpio.h
/home/modehua/sdk/zynq_7010/Gpio.h
thread
-
condition_variable
-
BlockingQueue.h
/home/modehua/sdk/zynq_7010/BlockingQueue.h
FsmState.h
/home/modehua/sdk/zynq_7010/FsmState.h
Pwm.h
/home/modehua/sdk/zynq_7010/Pwm.h
/home/modehua/sdk/zynq_7010/SysInforTool.h
scannersysinfo.h
/home/modehua/sdk/zynq_7010/scannersysinfo.h
json.hpp
/home/modehua/sdk/zynq_7010/json.hpp
/home/modehua/sdk/zynq_7010/ThreadPool.h
vector
-
@ -1166,6 +1396,60 @@ stdexcept
/home/modehua/sdk/zynq_7010/USBProtocol.h
/home/modehua/sdk/zynq_7010/UsbEndpoint.h
unistd.h
-
sys/types.h
-
sys/stat.h
-
fcntl.h
-
map
-
errno.h
-
scanservices_utils.h
/home/modehua/sdk/zynq_7010/scanservices_utils.h
/home/modehua/sdk/zynq_7010/UsbScanner.cpp
UsbScanner.h
/home/modehua/sdk/zynq_7010/UsbScanner.h
turbojpeg.h
-
JsonConfig.h
/home/modehua/sdk/zynq_7010/JsonConfig.h
USBProtocol.h
/home/modehua/sdk/zynq_7010/USBProtocol.h
filetools.h
/home/modehua/sdk/zynq_7010/filetools.h
logs_out.h
/home/modehua/sdk/zynq_7010/logs_out.h
/home/modehua/sdk/zynq_7010/UsbScanner.h
IScanner.h
/home/modehua/sdk/zynq_7010/IScanner.h
Scanner.h
/home/modehua/sdk/zynq_7010/Scanner.h
memory
-
FsmState.h
/home/modehua/sdk/zynq_7010/FsmState.h
usbdevice.h
/home/modehua/sdk/zynq_7010/usbdevice.h
/home/modehua/sdk/zynq_7010/UsbmsgHandler.cpp
UsbmsgHandler.h
/home/modehua/sdk/zynq_7010/UsbmsgHandler.h
Scanner.h
/home/modehua/sdk/zynq_7010/Scanner.h
/home/modehua/sdk/zynq_7010/UsbmsgHandler.h
/home/modehua/sdk/zynq_7010/ZouZhiMotor.h
Motor.h
/home/modehua/sdk/zynq_7010/Motor.h
/home/modehua/sdk/zynq_7010/autoevent.hpp
mutex
-
@ -1176,6 +1460,10 @@ condition_variable
stdint.h
-
/home/modehua/sdk/zynq_7010/buildconf.h
/home/modehua/sdk/zynq_7010/camtp.h
/home/modehua/sdk/zynq_7010/correct_ultis.h
sstream
-
@ -1210,6 +1498,10 @@ iostream
ctime
-
/home/modehua/sdk/zynq_7010/fpgacontrol.h
string
-
/home/modehua/sdk/zynq_7010/gvideo.h
string
-
@ -1556,6 +1848,74 @@ limits
type_traits
-
/home/modehua/sdk/zynq_7010/logs_out.h
syslog.h
-
stdio.h
-
/home/modehua/sdk/zynq_7010/main.cpp
cstdio
-
iostream
-
fstream
-
DevUtil.h
/home/modehua/sdk/zynq_7010/DevUtil.h
Motor.h
/home/modehua/sdk/zynq_7010/Motor.h
thread
-
string
-
gvideo.h
/home/modehua/sdk/zynq_7010/gvideo.h
FpgaComm.h
/home/modehua/sdk/zynq_7010/FpgaComm.h
FsmState.h
/home/modehua/sdk/zynq_7010/FsmState.h
Scanner.h
/home/modehua/sdk/zynq_7010/Scanner.h
sstream
-
stdio.h
-
stdlib.h
-
signal.h
-
sys/file.h
-
HGUsb.h
/home/modehua/sdk/zynq_7010/HGUsb.h
memory.h
-
UsbScanner.h
/home/modehua/sdk/zynq_7010/UsbScanner.h
scanservices_utils.h
/home/modehua/sdk/zynq_7010/scanservices_utils.h
turbojpeg.h
-
JsonConfig.h
/home/modehua/sdk/zynq_7010/JsonConfig.h
syslog.h
-
utilsfunc.h
/home/modehua/sdk/zynq_7010/utilsfunc.h
correct_ultis.h
/home/modehua/sdk/zynq_7010/correct_ultis.h
errno.h
-
USBProtocol.h
/home/modehua/sdk/zynq_7010/USBProtocol.h
MotorConfig.h
/home/modehua/sdk/zynq_7010/MotorConfig.h
iomanip
-
usbdevice.h
/home/modehua/sdk/zynq_7010/usbdevice.h
/home/modehua/sdk/zynq_7010/scannersysinfo.h
sstream
-
@ -1594,6 +1954,40 @@ unistd.h
sys/ioctl.h
-
/home/modehua/sdk/zynq_7010/usb_gadget.h
linux/usb/ch9.h
-
linux/usb/gadgetfs.h
-
linux/usb/functionfs.h
-
usbstring.h
/home/modehua/sdk/zynq_7010/usbstring.h
/home/modehua/sdk/zynq_7010/usbdevice.h
stdint.h
-
thread
-
functional
-
memory
-
camtp.h
/home/modehua/sdk/zynq_7010/camtp.h
buildconf.h
/home/modehua/sdk/zynq_7010/buildconf.h
usb_gadget.h
/home/modehua/sdk/zynq_7010/usb_gadget.h
libaio.h
-
queue
-
mutex
-
/home/modehua/sdk/zynq_7010/usbstring.h
/home/modehua/sdk/zynq_7010/utilsfunc.h
scanservices_utils.h
/home/modehua/sdk/zynq_7010/scanservices_utils.h

Binary file not shown.

View File

@ -339,50 +339,56 @@ int main(int argc, char *argv[])
{
HG_JpegCompressInfo info = m_scanner->GetImage();
int index = 0;
//int index = 0;
unsigned char *p = (unsigned char *)malloc(sizeof(info)+ info.DataLength + 4 );
// unsigned char *p = (unsigned char *)malloc(sizeof(info)+ info.DataLength + 4 );
memcpy(p + index,&info.data_type,sizeof(int));
index += sizeof(int);
int val =*(int *)p;
memcpy(p + index,&info.first_frame,sizeof(int));
index += sizeof(int);
memcpy(p + index,&info.last_frame,sizeof(int));
index += sizeof(int);
memcpy(p + index,&info.index_frame,sizeof(int));
index += sizeof(int);
memcpy(p + index,&info.DataLength,sizeof(int));
index += sizeof(int);
memcpy(p + index,&info.width,sizeof(int));
index += sizeof(int);
memcpy(p + index,&info.height,sizeof(int));
index += sizeof(int);
//printf("info.DataLength =%d index=%d\r\n",info.DataLength,index);
if (!info.pJpegData)
{
printf("取图失败\r\n");
break;
}
// memcpy(p + index,&info.data_type,sizeof(int));
// index += sizeof(int);
// int val =*(int *)p;
// memcpy(p + index,&info.first_frame,sizeof(int));
// index += sizeof(int);
// memcpy(p + index,&info.last_frame,sizeof(int));
// index += sizeof(int);
// memcpy(p + index,&info.index_frame,sizeof(int));
// index += sizeof(int);
// memcpy(p + index,&info.DataLength,sizeof(int));
// index += sizeof(int);
// memcpy(p + index,&info.width,sizeof(int));
// index += sizeof(int);
// memcpy(p + index,&info.height,sizeof(int));
// index += sizeof(int);
// //printf("info.DataLength =%d index=%d\r\n",info.DataLength,index);
// if (!info.pJpegData)
// {
// printf("取图失败\r\n");
// break;
// }
memcpy(p + index,info.pJpegData,info.DataLength);
//memcpy(p + index,info.pJpegData,info.DataLength);
index +=info.DataLength;
//index +=info.DataLength;
//printf("info.data_type:%d info.first_frame:%d last_frame:%d index_frame:%d DataLength:%d\r\n",info.data_type,info.first_frame,info.last_frame,info.index_frame,info.DataLength);
//printf(" index :%d\r\n", index);
m_scanner->write_bulk(&index,sizeof(int));
// m_scanner->write_bulk(&index,sizeof(int));
int tt = m_scanner->write_bulk(p,index);
break;
// int tt = m_scanner->write_bulk(p,index);
// if(p)
// free(p);
// if(info.pJpegData)
// tjFree(info.pJpegData);
// break;
if (info.pJpegData != nullptr && info.DataLength != 0)
{
int tt = m_scanner->write_bulk((void*)&info, sizeof(info));
break;
int tt = m_scanner->write_bulk((void*)&info, sizeof(int)*7);
//break;
//LOG("GET_IMAGE info.pJpegData =%p info.DataLength=%d \n", info.pJpegData, info.DataLength);
@ -411,8 +417,8 @@ int main(int argc, char *argv[])
else
index += tt;
}
// tjFree(info.pJpegData);
//LOG("Free info.pJpegData done\n");
tjFree(info.pJpegData);
LOG("Free info.pJpegData done\n");
}
}
break;