DALSA線陣CCD相機開發 之 opencv讀取圖片
SDK的下載
SDK的安裝
解壓執行.exe檔案,按照提示確定,下一步即可。
幫助文件和demo
如果要獲得完整的幫助文件和demo,在SDK安裝時選擇full安裝,路徑可以自己選擇,預設路徑為 C:\Program Files\Teledyne DALSA\。
主要demo簡介
在C:\Program Files\Teledyne DALSA\Sapera\Demos\Classes\VC中提供了多個開發Demo供使用者參考
-
Grab Demo (Dialog Box Interface 對話方塊) 路徑:\Sapera\Demos\Classes\Vc\GrabDemo\Release\GrabDemo.exe 功能:顯示了基本的採集功能 允許獲得連續或單幀影象 同時調整採集引數
-
Grab Demo (Single Document Interface 單文件) 路徑:\Sapera\Demos\Classes\Vc\GrabDemo\Release\GrabDemoSDI.exe 功能:顯示了基本的採集功能 允許獲得連續或單幀影象 同時調整採集引數
-
Sequential Grab Demo 路徑:\Sapera\Demos\Classes\Vc\SeqGrabDemo\Release\SeqGrabDemo.exe 功能:採集序列影象至記憶體而後顯示 程式允許錄製多段視訊 並可儲存、匯入AVI檔案 每一影象儲存於不同buffer中 可通過對話方塊設定buffer大小等引數
-
Bayer Demo 路徑:\Sapera\Demos\Classes\Vc\BayerDemo\Release\BayerDemo.exe 功能:顯示Bayer 轉換功能 進行Bayer轉換引數設定
-
Flat-field Demo 路徑:\Sapera\Demos\Classes\Vc\FlatFieldDemo\Release\FlatFieldDemo.exe 功能:顯示平場校正功能 平場校正Flat FieldCorrection (FFC) 包括調整模式噪聲FixedPattern Noise (FPN),畫素置換 Pixel Replacement, Photo Response Non Uniformity (PRNU), 和斑點校正 Shading Correction.
-
I/O Demo 路徑:\Sapera\Demos\Classes\Vc\IODemo\Release\IODemo.exe 功能:顯示一般I/O裝置的使用 允許監視當前輸入輸出狀態 改變高低極性狀態;允許監視輸入中斷並記錄中斷數
-
GigE-Vision Camera Demo 路徑:\Sapera\Demos\Classes\Vc\GigeCameraDemo\Release\GigeCameraDemo.exe 功能:怎樣使用DALSAGigE Vision™ 相機獲得影象. 可匯入相機配置檔案
使用opencv讀取圖片
以 GigeCameraDemo 為例,找到 XferCallback 函式,修改程式碼如下:
`void CGigeCameraDemoDlg::XferCallback(SapXferCallbackInfo *pInfo)
{
CGigeCameraDemoDlg *pDlg= (CGigeCameraDemoDlg *) pInfo->GetContext();
// If grabbing in trash buffer, do not display the image, update the
// appropriate number of frames on the status bar instead
if (pInfo->IsTrash())
{
CString str;
str.Format(_T("Frames acquired in trash buffer: %d"), pInfo->GetEventCount());
pDlg->m_statusWnd.SetWindowText(str);
}
// Refresh view
else
{
BYTE pData;
void* pDataAddr = &pData;
BOOL success = pDlg->m_Buffers->GetAddress(static_count, &pDataAddr);
int width = pDlg->m_Buffers->GetWidth();
int height = pDlg->m_Buffers->GetHeight();
cv::Mat img = cv::Mat::zeros(cv::Size(width, height), CV_8U);
memcpy(img.data, pDataAddr, width*height);
//Find_and_Draw_LeftLines(img, 10, 150, 5, left_deta_width);
//line(left_pic, cv::Point(left_detect_width, 0), cv::Point(left_detect_width, 32), cv::Scalar(255, 255, 0), 2, 4);
//cv::imshow("image", left_pic);
cv::imshow("image", img);
cv::waitKey(1);
}
}`
執行程式碼即可。