inline int Decode(int CurrentNumber,LPBYTE lpBits,bool Color)
{
if (CameraStructure[CurrentNumber].AWB==TRUE)
{
CameraStructure[CurrentNumber].AWB=FALSE;
AWB(CurrentNumber,lpBits);
}
if (CameraStructure[CurrentNumber].AE==TRUE)
{
CameraStructure[CurrentNumber].AE=FALSE;
AE(CurrentNumber,lpBits);
}
if (CameraStructure[CurrentNumber].Direction==TRUE)
{
for(int j=0;j<CameraStructure[CurrentNumber].VideoHeight;j++)
for(int i=0;i<CameraStructure[CurrentNumber].VideoWidth;i++)
{
*((LPBYTE)CameraStructure[CurrentNumber].lpTempBits0+i*CameraStructure[CurrentNumber].VideoHeight+(CameraStructure[CurrentNumber].VideoHeight-j))=*(lpBits+j*CameraStructure[CurrentNumber].VideoWidth+i);
}
}
int VS,HS;
LPBYTE LPDIB=CameraStructure[CurrentNumber].lpDisplayBits;
LPBYTE LPSCR=NULL;
if (CameraStructure[CurrentNumber].Direction==TRUE)
LPSCR=(LPBYTE)CameraStructure[CurrentNumber].lpTempBits0;
else
LPSCR=lpBits;
WORD R,G,B,L;
INT NewX=0;
INT NewY=0;
INT VideoLine=0;
int VideoWidth=CameraStructure[CurrentNumber].VIDEO_BIH.biWidth;
int VideoHeight=CameraStructure[CurrentNumber].VIDEO_BIH.biHeight;
if (Color==true)
{
for(VS=2;VS<VideoHeight-2;VS+=2)
for(HS=2;HS<VideoWidth-2;HS+=2)
{
//G2
if (CameraStructure[CurrentNumber].HorizontalMirror==FALSE)// 水平镜像
NewX=HS;
else
NewX=VideoWidth-HS;
if (CameraStructure[CurrentNumber].VerticalMirror==FALSE)// 垂直镜像
NewY=VideoHeight-VS;
else
NewY=VS;
VideoLine=VideoWidth;
if (CameraStructure[CurrentNumber].Direction==TRUE)
LPSCR=(LPBYTE)CameraStructure[CurrentNumber].lpTempBits0 + (VideoWidth*VS+HS);
else
LPSCR=lpBits + (VideoWidth*VS+HS);
LPDIB=CameraStructure[CurrentNumber].lpDisplayBits+(VideoLine*(NewY)+(NewX))*3;
//LPDIB=CameraStructure[CurrentNumber].lpDisplayBits+(VideoLine*(NewY-0)+(NewX))*3;
//R=(*(LPSCR+VideoWidth+1)+*(LPSCR-VideoWidth-1))>>1;
//G=(*(LPSCR+1)+*(LPSCR-1))>>1;
//B=*(LPSCR);
//R=(SWAP16(*(LPSCR+VideoWidth+1))+SWAP16(*(LPSCR-VideoWidth-1)))>>1;
//G=(SWAP16(*(LPSCR+1))+SWAP16(*(LPSCR-1)))>>1;
//B=SWAP16(*(LPSCR));
B=((*(LPSCR+VideoWidth))+(*(LPSCR-VideoWidth)))>>1;
G=(*(LPSCR));
R=((*(LPSCR+1)+*(LPSCR-1)))>>1;
if (CameraStructure[CurrentNumber].Mono==TRUE)
{
L=(B+G+R)/3;
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[L];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[L];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[L];
}
else
{
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[B];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[G];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[R];
}
//R
LPSCR++;
if (CameraStructure[CurrentNumber].HorizontalMirror==FALSE)// 水平镜像
NewX=HS+1;
else
NewX=VideoWidth-HS-1;
if (CameraStructure[CurrentNumber].VerticalMirror==FALSE)// 垂直镜像
NewY=VideoHeight-VS;
else
NewY=VS;
LPDIB=CameraStructure[CurrentNumber].lpDisplayBits+(VideoLine*(NewY)+(NewX))*3;
//if (CameraStructure[CurrentNumber].HorizontalMirror==FALSE)
// LPDIB=CameraStructure[CurrentNumber].lpDisplayBits+(VideoLine*(NewY-0)+(NewX+1))*3;
//else
// LPDIB=CameraStructure[CurrentNumber].lpDisplayBits+(VideoLine*(NewY-0)+(NewX-1))*3;
//R=(*(LPSCR+VideoWidth)+*(LPSCR-VideoWidth))>>1;
//G=*(LPSCR);
//B=(*(LPSCR+1)+*(LPSCR-1))>>1;
//R=(SWAP16(*(LPSCR+VideoWidth))+SWAP16(*(LPSCR-VideoWidth)))>>1;
//G=SWAP16(*(LPSCR));
//B=(SWAP16(*(LPSCR+1))+SWAP16(*(LPSCR-1)))>>1;
B=((*(LPSCR+VideoWidth+1))+(*(LPSCR-VideoWidth-1)))>>1;
G=((*(LPSCR+1))+(*(LPSCR-1)))>>1;
R=(*(LPSCR));
if (CameraStructure[CurrentNumber].Mono==TRUE)
{
L=(B+G+R)/3;
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[L];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[L];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[L];
}
else
{
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[B];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[G];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[R];
}
//B
if (CameraStructure[CurrentNumber].Direction==TRUE)
LPSCR=(LPBYTE)CameraStructure[CurrentNumber].lpTempBits0 + (VideoWidth*(VS+1)+HS) ;
else
LPSCR=lpBits + (VideoWidth*(VS+1)+HS) ;
if (CameraStructure[CurrentNumber].HorizontalMirror==FALSE)// 水平镜像
NewX=HS;
else
NewX=VideoWidth-HS;
if (CameraStructure[CurrentNumber].VerticalMirror==FALSE)// 垂直镜像
NewY=VideoHeight-VS-1;
else
NewY=VS+1;
LPDIB=CameraStructure[CurrentNumber].lpDisplayBits+(VideoLine*(NewY)+(NewX))*3;
//LPDIB=CameraStructure[CurrentNumber].lpDisplayBits+(VideoLine*(NewY-1)+(NewX))*3;
//B=(*(LPSCR+VideoWidth)+*(LPSCR-VideoWidth))>>1;
//G=*(LPSCR);
//R=(*(LPSCR+1)+*(LPSCR-1))>>1;
//B=(SWAP16(*(LPSCR+VideoWidth))+SWAP16(*(LPSCR-VideoWidth)))>>1;
//G=SWAP16(*(LPSCR));
//R=(SWAP16(*(LPSCR+1))+SWAP16(*(LPSCR-1)))>>1;
R=(*(LPSCR+VideoWidth+1)+*(LPSCR-VideoWidth-1))>>1;
G=((*(LPSCR+1))+(*(LPSCR-1)))>>1;
B=(*(LPSCR));
if (CameraStructure[CurrentNumber].Mono==TRUE)
{
L=(B+G+R)/3;
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[L];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[L];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[L];
}
else
{
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[B];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[G];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[R];
}
//G1
LPSCR++;
if (CameraStructure[CurrentNumber].HorizontalMirror==FALSE)// 水平镜像
NewX=HS+1;
else
NewX=VideoWidth-HS-1;
if (CameraStructure[CurrentNumber].VerticalMirror==FALSE)// 垂直镜像
NewY=VideoHeight-VS-1;
else
NewY=VS+1;
LPDIB=CameraStructure[CurrentNumber].lpDisplayBits+(VideoLine*(NewY)+(NewX))*3;
//if (CameraStructure[CurrentNumber].HorizontalMirror==FALSE)
// LPDIB=CameraStructure[CurrentNumber].lpDisplayBits+(VideoLine*(NewY-1)+(NewX+1))*3;
//else
// LPDIB=CameraStructure[CurrentNumber].lpDisplayBits+(VideoLine*(NewY-1)+(NewX-1))*3;
//B=(*(LPSCR+VideoWidth+1)+*(LPSCR-VideoWidth-1))>>1;
//G=(*(LPSCR+1)+*(LPSCR-1))>>1;
//R=*(LPSCR);
//B=(SWAP16(*(LPSCR+VideoWidth+1))+SWAP16(*(LPSCR-VideoWidth-1)))>>1;
//G=(SWAP16(*(LPSCR+1))+SWAP16(*(LPSCR-1)))>>1;
//R=SWAP16(*(LPSCR));
R=((*(LPSCR+VideoWidth))+(*(LPSCR-VideoWidth)))>>1;
G=(*(LPSCR));
B=((*(LPSCR+1))+(*(LPSCR-1)))>>1;
if (CameraStructure[CurrentNumber].Mono==TRUE)
{
L=(B+G+R)/3;
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[L];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[L];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[L];
}
else
{
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[B];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[G];
*(LPDIB++)=CameraStructure[CurrentNumber].LutD8[R];
}
}
}
CCCDC.rar_CCD 相机_FPGA 网口_UDP_UDP fpga_ccd fpga
版权申诉
4 浏览量
2022-09-24
04:47:26
上传
评论
收藏 40KB RAR 举报
小波思基
- 粉丝: 74
- 资源: 1万+
最新资源
- Anaconda3-2024.02-1-Windows-x86-64.exe
- stm32cubemx can通信 一个板子负责传感器采集 一个板子负责wifi传递到网页 网页可控制传感器板子.zip
- k8s集群搭建1.27.1版本(来源于图灵k8s笔记)
- 树莓派连接 DS18B20 温度传感器读取温度时监控客户端,服务器端连接状况,实现断线重连机制
- 小游戏-坦克大战,你认为的小游戏
- 最好用的富文本编辑器wangeditor
- jQuery 3.7.1
- 校园失物招领小程序源码可作毕业设计
- SAP客户端GUI740安装包(JAVA版本)
- winlibs-x86-64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64msvcrt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0