在BC里,有这样一段抓拍的函数,请教怎么判断这个图象是否清楚与模糊
在BC里,有这样一段抓拍的函数,请问如何判断这个图象是否清楚与模糊?
在BC里,用得是OK图象采集卡。有这样一个函数:
void TForm1::zhuapaidx(int fangxiang)
{
if(hBoard) {
//get current vga mode
lRGBForm=LOWORD(okSetCaptureParam(hBoard, CAPTURE_SCRRGBFORMAT, -1));
//set target buffer format to same as current vga
okSetVideoParam( hBoard, VIDEO_SOURCECHAN, fangxiang);
okSetCaptureParam(hBoard,CAPTURE_BUFRGBFORMAT, lRGBForm);
//-----2 capture to BUFFER
rcBuffer.left=rcBuffer.top=0;
rcBuffer.right=498;
rcBuffer.bottom=565;
//set target(here is buffer) rect
okSetTargetRect(hBoard, BUFFER, &rcBuffer);
//set to not waiting end, return immediately
okSetCaptureParam(hBoard, CAPTURE_SEQCAPWAIT, 0);
num=okGetBufferSize(hBoard,NULL,NULL);//
//you can here set your callback functions if necessary
//okSetSeqCallback(hBoard,BeginCapture,BackDisplay,
//EndCapture);
okCaptureTo(hBoard,BUFFER,0,num);// sequence capture to frame buffer
//way 1.
//while( okGetCaptureStatus(hBoard,0) ) {
// SleepEx(5,TRUE); //best do sleep when loop waitting
//}
//way 2.
okGetCaptureStatus(hBoard,1);
okSaveImageFile( hBoard, "11.bmp ", 0, BUFFER, 0, 1);
//okSaveImageFile( hBoard, "13.bmp ", 0, BUFFER, 0, 1);
//close specified board
//okCloseBoard(hBoard);
//化出坐标线
//抓拍的图像
Graphics::TBitmap* Expro=new Graphics::TBitmap;
Expro-> Height= 565;
Expro-> Width= 498;
Expro-> LoadFromFile( "11.bmp ");
Expro-> Canvas-> Pen-> Color=clRed;
Expro-> Canvas-> Pen-> Width=5;
//第一个方格线
Expro-> Canvas-> MoveTo(Aread1.ep1.x,Aread1.ep1.y);
Expro-> Canvas-> LineTo(Aread1.ep2.x,Aread1.ep2.y);
Expro-> Canvas-> LineTo(Aread1.sp2.x,Aread1.sp2.y);
Expro-> Canvas-> LineTo(Aread1.sp1.x,Aread1.sp1.y);
Expro-> Canvas-> LineTo(Aread1.ep1.x,Aread1.ep1.y);
//第二个方格线
Expro-> Canvas-> MoveTo(Aread2.ep1.x,Aread2.ep1.y);
Expro-> Canvas-> LineTo(Aread2.ep2.x,Aread2.ep2.y);
Expro-> Canvas-> LineTo(Aread2.sp2.x,Aread2.sp2.y);
Expro-> Canvas-> LineTo(Aread2.sp1.x,Aread2.sp1.y);
Expro-> Canvas-> LineTo(Aread2.ep1.x,Aread2.ep1.y);
//第三个方格线
Expro-> Canvas-> MoveTo(Aread3.ep1.x,Aread3.ep1.y);
Expro-> Canvas-> LineTo(Aread3.ep2.x,Aread3.ep2.y);
Expro-> Canvas-> LineTo(Aread3.sp2.x,Aread3.sp2.y);
Expro-> Canvas-> LineTo(Aread3.sp1.x,Aread3.sp1.y);
Expro-> Canvas-> LineTo(Aread3.ep1.x,Aread3.ep1.y);
Image4-> Canvas-> Draw(0,0,Expro);
delete Expro;
}
CCD由于出现大雾和浓雾拍摄到的图象会模糊,请问如何来判断该图象是否模糊的?
------解决方案--------------------
是否可以通过如16*16矩阵的像素间色差值做判断如差值大就为清晰,小就为模糊。
并且可通过已有数据计算出模糊的的图象颜色间差值范围。
在BC里,用得是OK图象采集卡。有这样一个函数:
void TForm1::zhuapaidx(int fangxiang)
{
if(hBoard) {
//get current vga mode
lRGBForm=LOWORD(okSetCaptureParam(hBoard, CAPTURE_SCRRGBFORMAT, -1));
//set target buffer format to same as current vga
okSetVideoParam( hBoard, VIDEO_SOURCECHAN, fangxiang);
okSetCaptureParam(hBoard,CAPTURE_BUFRGBFORMAT, lRGBForm);
//-----2 capture to BUFFER
rcBuffer.left=rcBuffer.top=0;
rcBuffer.right=498;
rcBuffer.bottom=565;
//set target(here is buffer) rect
okSetTargetRect(hBoard, BUFFER, &rcBuffer);
//set to not waiting end, return immediately
okSetCaptureParam(hBoard, CAPTURE_SEQCAPWAIT, 0);
num=okGetBufferSize(hBoard,NULL,NULL);//
//you can here set your callback functions if necessary
//okSetSeqCallback(hBoard,BeginCapture,BackDisplay,
//EndCapture);
okCaptureTo(hBoard,BUFFER,0,num);// sequence capture to frame buffer
//way 1.
//while( okGetCaptureStatus(hBoard,0) ) {
// SleepEx(5,TRUE); //best do sleep when loop waitting
//}
//way 2.
okGetCaptureStatus(hBoard,1);
okSaveImageFile( hBoard, "11.bmp ", 0, BUFFER, 0, 1);
//okSaveImageFile( hBoard, "13.bmp ", 0, BUFFER, 0, 1);
//close specified board
//okCloseBoard(hBoard);
//化出坐标线
//抓拍的图像
Graphics::TBitmap* Expro=new Graphics::TBitmap;
Expro-> Height= 565;
Expro-> Width= 498;
Expro-> LoadFromFile( "11.bmp ");
Expro-> Canvas-> Pen-> Color=clRed;
Expro-> Canvas-> Pen-> Width=5;
//第一个方格线
Expro-> Canvas-> MoveTo(Aread1.ep1.x,Aread1.ep1.y);
Expro-> Canvas-> LineTo(Aread1.ep2.x,Aread1.ep2.y);
Expro-> Canvas-> LineTo(Aread1.sp2.x,Aread1.sp2.y);
Expro-> Canvas-> LineTo(Aread1.sp1.x,Aread1.sp1.y);
Expro-> Canvas-> LineTo(Aread1.ep1.x,Aread1.ep1.y);
//第二个方格线
Expro-> Canvas-> MoveTo(Aread2.ep1.x,Aread2.ep1.y);
Expro-> Canvas-> LineTo(Aread2.ep2.x,Aread2.ep2.y);
Expro-> Canvas-> LineTo(Aread2.sp2.x,Aread2.sp2.y);
Expro-> Canvas-> LineTo(Aread2.sp1.x,Aread2.sp1.y);
Expro-> Canvas-> LineTo(Aread2.ep1.x,Aread2.ep1.y);
//第三个方格线
Expro-> Canvas-> MoveTo(Aread3.ep1.x,Aread3.ep1.y);
Expro-> Canvas-> LineTo(Aread3.ep2.x,Aread3.ep2.y);
Expro-> Canvas-> LineTo(Aread3.sp2.x,Aread3.sp2.y);
Expro-> Canvas-> LineTo(Aread3.sp1.x,Aread3.sp1.y);
Expro-> Canvas-> LineTo(Aread3.ep1.x,Aread3.ep1.y);
Image4-> Canvas-> Draw(0,0,Expro);
delete Expro;
}
CCD由于出现大雾和浓雾拍摄到的图象会模糊,请问如何来判断该图象是否模糊的?
------解决方案--------------------
是否可以通过如16*16矩阵的像素间色差值做判断如差值大就为清晰,小就为模糊。
并且可通过已有数据计算出模糊的的图象颜色间差值范围。