abdul_khathar
October 19, 2007, 11:14:21
hi !
i have created 1 dialog based application and linked two cameras, its working but its taking huger time and my systems is gettting slow.... :o
here is my coding
class CCam1_Listener: public GrabberListener
{
public:
virtual void frameReady( Grabber& caller, smart_ptr<DShowLib::MemBuffer> pBuffer, DWORD FrameNumber );
};
class CCam2_Listener: public GrabberListener
{
public:
virtual void frameReady( Grabber& caller, smart_ptr<DShowLib::MemBuffer> pBuffer, DWORD FrameNumber );
};
void CCam1_Listener::frameReady( Grabber& caller, smart_ptr<MemBuffer> pBuffer, DWORD currFrame)
{
int t_Y,t_X,t_padd=0,t_rv,t_gv,t_bv, t_width,t_height;
t_width = IMAGE_WIDTH;
t_height = IMAGE_HEIGHT;
BYTE *p;
p = pBuffer->getPtr();
if(Image.start_flag==1)
{
for(t_Y=0; t_Y<t_height; t_Y++) // Converting From Buffer into Array
{
for(t_X=0; t_X<t_width; t_X++)
{
t_bv = p[t_padd];
t_padd++;
t_gv = p[t_padd];
t_padd++;
t_rv = p[t_padd];
t_padd++;
t_padd++;
*(*(Image.p_pic_Array1+t_Y) + t_X) = RGB(t_bv,t_gv,t_rv);
*(*(Image.p_Master_Array+t_Y) + t_X) = RGB(t_bv,t_gv,t_rv);
}
}
Image.start_flag=0;
}
if(Image.Save_flag==1) // To Save the Image
{
t_padd=0;
for(t_Y=0; t_Y<t_height; t_Y++)
{
for(t_X=0; t_X<t_width; t_X++)
{
//Image Array 1
/* p[t_padd] = GetBValue(Image.p_pic_Array1[t_Y][t_X]);
t_padd++;
p[t_padd] = GetGValue(Image.p_pic_Array1[t_Y][t_X]);
t_padd++;
p[t_padd] = GetRValue(Image.p_pic_Array1[t_Y][t_X]);
*///
//Image Array 2
p[t_padd] = GetBValue(Image.p_pic_Array2[t_Y][t_X]);
t_padd++;
p[t_padd] = GetGValue(Image.p_pic_Array2[t_Y][t_X]);
t_padd++;
p[t_padd] = GetRValue(Image.p_pic_Array2[t_Y][t_X]);
t_padd++;
p[t_padd] = 0;
t_padd++;
}
}
CString t_path,t_filepath, cnt, t_comp_code;
char t_filename[MAX_PATH];
t_padd=0;
t_path=AfxGetApp()->m_pszHelpFilePath;
for(int t_i=1;t_i<=t_path.GetLength();t_i++)
{
if(t_path.Mid(t_i,18)=="VTS_VC_0003_070605")
{
t_path = t_path.Mid(0,t_i+18);
break;
}
}
img_count++;
// cnt.Format("%d - %d",vis.m_transaction_no, vis.m_ins);
cnt.Format("%d",img_count);
t_comp_code.Format("%d", vis.db_comp_code);
t_filepath = t_path + "\\Defective_Images\\" + t_comp_code + "\\" + cnt +".jpg";
sprintf(t_filename, "%s",t_filepath, 1);
saveToFileJPEG(*(pBuffer), t_filename);
Image.Save_flag=0;
}
}
void CCam2_Listener::frameReady( Grabber& caller, smart_ptr<MemBuffer> pBuffer, DWORD currFrame)
{
int t_Y,t_X,t_padd=0,t_rv,t_gv,t_bv, t_width,t_height;
t_width = IMAGE_WIDTH;
t_height = IMAGE_HEIGHT;
BYTE *p;
p = pBuffer->getPtr();
if(Image.start_flag==1)
{
for(t_Y=0; t_Y<t_height; t_Y++) // Converting From Buffer into Array
{
for(t_X=0; t_X<t_width; t_X++)
{
t_bv = p[t_padd];
t_padd++;
t_gv = p[t_padd];
t_padd++;
t_rv = p[t_padd];
t_padd++;
t_padd++;
*(*(Image.p_Cam2_pic_Array1+t_Y) + t_X) = RGB(t_bv,t_gv,t_rv);
*(*(Image.p_Cam2_Master_Array+t_Y) + t_X) = RGB(t_bv,t_gv,t_rv);
}
}
Image.start_flag=0;
}
if(Image.Save_flag==1) // To Save the Image
{
t_padd=0;
for(t_Y=0; t_Y<t_height; t_Y++)
{
for(t_X=0; t_X<t_width; t_X++)
{
//Image Array 1
/* p[t_padd] = GetBValue(Image.p_Cam2_pic_Array1[t_Y][t_X]);
t_padd++;
p[t_padd] = GetGValue(Image.p_Cam2_pic_Array1[t_Y][t_X]);
t_padd++;
p[t_padd] = GetRValue(Image.p_Cam2_pic_Array1[t_Y][t_X]);
*///
//Image Array 2
p[t_padd] = GetBValue(Image.p_Cam2_pic_Array2[t_Y][t_X]);
t_padd++;
p[t_padd] = GetGValue(Image.p_Cam2_pic_Array2[t_Y][t_X]);
t_padd++;
p[t_padd] = GetRValue(Image.p_Cam2_pic_Array2[t_Y][t_X]);
t_padd++;
p[t_padd] = 0;
t_padd++;
}
}
CString t_path,t_filepath, cnt, t_comp_code;
char t_filename[MAX_PATH];
t_padd=0;
t_path=AfxGetApp()->m_pszHelpFilePath;
for(int t_i=1;t_i<=t_path.GetLength();t_i++)
{
if(t_path.Mid(t_i,18)=="VTS_VC_0003_070605")
{
t_path = t_path.Mid(0,t_i+18);
break;
}
}
img_count++;
// cnt.Format("%d - %d",vis.m_transaction_no, vis.m_ins);
cnt.Format("%d",img_count);
t_comp_code = "6204" ;//.Format("%d", vis.db_comp_code);
t_filepath = t_path + "\\Defective_Images\\" + t_comp_code + "\\" + cnt +".jpg";
sprintf(t_filename, "%s",t_filepath, 1);
saveToFileJPEG(*(pBuffer), t_filename);
AfxMessageBox("Saved...");
Image.Save_flag=0;
}
}
these coding is to take a image from two cameras. it getting very slow. i have fixed 15FPS only..
please let me know or send me any sample program which is used to handle two cameras simultaneously..
thanks in advance
Abdul
i have created 1 dialog based application and linked two cameras, its working but its taking huger time and my systems is gettting slow.... :o
here is my coding
class CCam1_Listener: public GrabberListener
{
public:
virtual void frameReady( Grabber& caller, smart_ptr<DShowLib::MemBuffer> pBuffer, DWORD FrameNumber );
};
class CCam2_Listener: public GrabberListener
{
public:
virtual void frameReady( Grabber& caller, smart_ptr<DShowLib::MemBuffer> pBuffer, DWORD FrameNumber );
};
void CCam1_Listener::frameReady( Grabber& caller, smart_ptr<MemBuffer> pBuffer, DWORD currFrame)
{
int t_Y,t_X,t_padd=0,t_rv,t_gv,t_bv, t_width,t_height;
t_width = IMAGE_WIDTH;
t_height = IMAGE_HEIGHT;
BYTE *p;
p = pBuffer->getPtr();
if(Image.start_flag==1)
{
for(t_Y=0; t_Y<t_height; t_Y++) // Converting From Buffer into Array
{
for(t_X=0; t_X<t_width; t_X++)
{
t_bv = p[t_padd];
t_padd++;
t_gv = p[t_padd];
t_padd++;
t_rv = p[t_padd];
t_padd++;
t_padd++;
*(*(Image.p_pic_Array1+t_Y) + t_X) = RGB(t_bv,t_gv,t_rv);
*(*(Image.p_Master_Array+t_Y) + t_X) = RGB(t_bv,t_gv,t_rv);
}
}
Image.start_flag=0;
}
if(Image.Save_flag==1) // To Save the Image
{
t_padd=0;
for(t_Y=0; t_Y<t_height; t_Y++)
{
for(t_X=0; t_X<t_width; t_X++)
{
//Image Array 1
/* p[t_padd] = GetBValue(Image.p_pic_Array1[t_Y][t_X]);
t_padd++;
p[t_padd] = GetGValue(Image.p_pic_Array1[t_Y][t_X]);
t_padd++;
p[t_padd] = GetRValue(Image.p_pic_Array1[t_Y][t_X]);
*///
//Image Array 2
p[t_padd] = GetBValue(Image.p_pic_Array2[t_Y][t_X]);
t_padd++;
p[t_padd] = GetGValue(Image.p_pic_Array2[t_Y][t_X]);
t_padd++;
p[t_padd] = GetRValue(Image.p_pic_Array2[t_Y][t_X]);
t_padd++;
p[t_padd] = 0;
t_padd++;
}
}
CString t_path,t_filepath, cnt, t_comp_code;
char t_filename[MAX_PATH];
t_padd=0;
t_path=AfxGetApp()->m_pszHelpFilePath;
for(int t_i=1;t_i<=t_path.GetLength();t_i++)
{
if(t_path.Mid(t_i,18)=="VTS_VC_0003_070605")
{
t_path = t_path.Mid(0,t_i+18);
break;
}
}
img_count++;
// cnt.Format("%d - %d",vis.m_transaction_no, vis.m_ins);
cnt.Format("%d",img_count);
t_comp_code.Format("%d", vis.db_comp_code);
t_filepath = t_path + "\\Defective_Images\\" + t_comp_code + "\\" + cnt +".jpg";
sprintf(t_filename, "%s",t_filepath, 1);
saveToFileJPEG(*(pBuffer), t_filename);
Image.Save_flag=0;
}
}
void CCam2_Listener::frameReady( Grabber& caller, smart_ptr<MemBuffer> pBuffer, DWORD currFrame)
{
int t_Y,t_X,t_padd=0,t_rv,t_gv,t_bv, t_width,t_height;
t_width = IMAGE_WIDTH;
t_height = IMAGE_HEIGHT;
BYTE *p;
p = pBuffer->getPtr();
if(Image.start_flag==1)
{
for(t_Y=0; t_Y<t_height; t_Y++) // Converting From Buffer into Array
{
for(t_X=0; t_X<t_width; t_X++)
{
t_bv = p[t_padd];
t_padd++;
t_gv = p[t_padd];
t_padd++;
t_rv = p[t_padd];
t_padd++;
t_padd++;
*(*(Image.p_Cam2_pic_Array1+t_Y) + t_X) = RGB(t_bv,t_gv,t_rv);
*(*(Image.p_Cam2_Master_Array+t_Y) + t_X) = RGB(t_bv,t_gv,t_rv);
}
}
Image.start_flag=0;
}
if(Image.Save_flag==1) // To Save the Image
{
t_padd=0;
for(t_Y=0; t_Y<t_height; t_Y++)
{
for(t_X=0; t_X<t_width; t_X++)
{
//Image Array 1
/* p[t_padd] = GetBValue(Image.p_Cam2_pic_Array1[t_Y][t_X]);
t_padd++;
p[t_padd] = GetGValue(Image.p_Cam2_pic_Array1[t_Y][t_X]);
t_padd++;
p[t_padd] = GetRValue(Image.p_Cam2_pic_Array1[t_Y][t_X]);
*///
//Image Array 2
p[t_padd] = GetBValue(Image.p_Cam2_pic_Array2[t_Y][t_X]);
t_padd++;
p[t_padd] = GetGValue(Image.p_Cam2_pic_Array2[t_Y][t_X]);
t_padd++;
p[t_padd] = GetRValue(Image.p_Cam2_pic_Array2[t_Y][t_X]);
t_padd++;
p[t_padd] = 0;
t_padd++;
}
}
CString t_path,t_filepath, cnt, t_comp_code;
char t_filename[MAX_PATH];
t_padd=0;
t_path=AfxGetApp()->m_pszHelpFilePath;
for(int t_i=1;t_i<=t_path.GetLength();t_i++)
{
if(t_path.Mid(t_i,18)=="VTS_VC_0003_070605")
{
t_path = t_path.Mid(0,t_i+18);
break;
}
}
img_count++;
// cnt.Format("%d - %d",vis.m_transaction_no, vis.m_ins);
cnt.Format("%d",img_count);
t_comp_code = "6204" ;//.Format("%d", vis.db_comp_code);
t_filepath = t_path + "\\Defective_Images\\" + t_comp_code + "\\" + cnt +".jpg";
sprintf(t_filename, "%s",t_filepath, 1);
saveToFileJPEG(*(pBuffer), t_filename);
AfxMessageBox("Saved...");
Image.Save_flag=0;
}
}
these coding is to take a image from two cameras. it getting very slow. i have fixed 15FPS only..
please let me know or send me any sample program which is used to handle two cameras simultaneously..
thanks in advance
Abdul