dalsa 8k線陣網口相機c#開發
這幾天一直在折騰dalsa線陣相機,借鑑它的幫助文件和demo程式,終於實現了影象採集。記錄一下。
安裝dalsa相機驅動和它自帶的採集軟體後,在安裝目錄下Component資料夾內有一個dll檔案,這就是c#需要用到的,help資料夾內有開發文件,demo資料夾內是winform程式,examples資料夾內是控制檯程式。先用自帶的採集軟體,設定好引數,儲存為配置檔案,然後就可以用c#來讀取該配置檔案了,直接貼程式碼:
//初始化相機類
SapLocation m_ServerLocation;
SapAcqDevice m_AcqDevice;
SapBuffer m_Buffers;
SapAcqDeviceToBuf m_Xfer;
/// <summary>
/// 獲取相機名和索引
/// </summary>
/// <param name="sCameraName"></param>
/// <param name="nIndex"></param>
/// <returns></returns>
public bool GetCameraInfo(out string sCameraName, out int nIndex)
{
sCameraName = "" ;
nIndex = 0;
int serverCount = SapManager.GetServerCount();
int GenieIndex = 0;
System.Collections.ArrayList listServerNames = new System.Collections.ArrayList();
bool bFind = false;
string serverName = "";
for (int serverIndex = 0; serverIndex < serverCount; serverIndex++)
{
if (SapManager.GetResourceCount(serverIndex, SapManager.ResourceType.AcqDevice) != 0)
{
serverName = SapManager.GetServerName(serverIndex);
listServerNames.Add(serverName);
GenieIndex++;
bFind = true;
}
}
int count = 1;
string deviceName = "";
foreach (string sName in listServerNames)
{
deviceName = SapManager.GetResourceName(sName, SapManager.ResourceType.AcqDevice, 0);
count++;
}
sCameraName = serverName;
nIndex = GenieIndex;
return bFind;
}
/// <summary>
/// 建立各物件
/// </summary>
/// <returns></returns>
public bool CreateObjects()
{
// Create acquisition object
if (m_AcqDevice != null && !m_AcqDevice.Initialized)
{
if (m_AcqDevice.Create() == false)
{
return false;
}
}
// Create buffer object
if (m_Buffers != null && !m_Buffers.Initialized)
{
if (m_Buffers.Create() == false)
{
return false;
}
m_Buffers.Clear();
}
if (m_Xfer != null && m_Xfer.Pairs[0] != null)
{
m_Xfer.Pairs[0].Cycle = SapXferPair.CycleMode.NextWithTrash;
if (m_Xfer.Pairs[0].Cycle != SapXferPair.CycleMode.NextWithTrash)
{
return false;
}
}
// Create Xfer object
if (m_Xfer != null && !m_Xfer.Initialized)
{
if (m_Xfer.Create() == false)
{
return false;
}
}
return true;
}
private void button1_Click(object sender, EventArgs e)
{
string Name;
int Index;
bool RTemp = GetCameraInfo(out Name,out Index);
MessageBox.Show(Name);
m_ServerLocation = new SapLocation(Name,0);
m_AcqDevice = new SapAcqDevice(m_ServerLocation, "C:\\Users\\dell\\Desktop\\dalsa111.ccf");//讀取配置檔案
if (SapBuffer.IsBufferTypeSupported(m_ServerLocation, SapBuffer.MemoryType.ScatterGather))
m_Buffers = new SapBufferWithTrash(2, m_AcqDevice, SapBuffer.MemoryType.ScatterGather);
else
m_Buffers = new SapBufferWithTrash(2, m_AcqDevice, SapBuffer.MemoryType.ScatterGatherPhysical);
m_Xfer = new SapAcqDeviceToBuf(m_AcqDevice, m_Buffers);
m_Xfer.Pairs[0].EventType = SapXferPair.XferEventType.EndOfFrame;
m_Xfer.XferNotify += new SapXferNotifyHandler(xfer_XferNotify);
m_Xfer.XferNotifyContext = this;
if (!CreateObjects())
{
MessageBox.Show("失敗");
}
}
IntPtr Data;//影象指標
/// <summary>
/// 相機自帶回調函式
/// </summary>
/// <param name="sender"></param>
/// <param name="argsNotify"></param>
void xfer_XferNotify(object sender, SapXferNotifyEventArgs argsNotify)
{
unsafe
{
//fixed (byte* dest = mCamerData.ImgBuffer) //保持記憶體不被回收
//{
m_Buffers.GetAddress(out Data);
HObject ImageTemp = null;
HOperatorSet.GenImage1(out ImageTemp, "byte", 8192, 2000, Data);//取記憶體資料,生成影象,halcon實現
hWindowControl1.HalconWindow.SetPart(0, 0, 2000, 8192);
HOperatorSet.DispObj(ImageTemp,hWindowControl1.HalconWindow);
// HOperatorSet.WriteImage(ImageTemp, "bmp", 0, "C:\\Users\\dell\\Desktop\\3");
//}
}
}
private void button2_Click(object sender, EventArgs e)
{
if (m_Xfer.Grab())
{
MessageBox.Show("開始採集");
}
}
以上是網口相機的採集程式,主要參照了demo程式,影象採集到記憶體後,使用halcon中的genimage函式從記憶體中直接讀取並生成影象,後續可以對影象進行相應的操作了。如果是camlink介面相機,主要要修改GetCameraInfo方法和其他地方,具體參照demo。
相關推薦
dalsa 8k線陣網口相機c#開發
這幾天一直在折騰dalsa線陣相機,借鑑它的幫助文件和demo程式,終於實現了影象採集。記錄一下。 安裝dalsa相機驅動和它自帶的採集軟體後,在安裝目錄下Component資料夾內有一個dll檔案,這就是c#需要用到的,help資料夾內有開發文件,demo資
Dalsa公司PX4影象採集卡+P4線陣彩色相機的開發
本文以最近使用的Dalsa公司的P4-CC-02K04T彩色線陣相機和Xcelera-CL_PX4影象採集卡為例講述線陣相機的簡單用法。新手初用,如有錯誤,歡迎指正。 P4-CC-02K04T彩色線陣相機 P4系列是Dalsa最新推出的高效能多線掃描數字相機,基於線陣CMO
DALSA線陣CCD相機開發 之 opencv讀取圖片
SDK的下載 SDK的安裝 解壓執行.exe檔案,按照提示確定,下一步即可。 幫助文件和demo 如果要獲得完整的幫助文件和demo,在SDK安裝時選擇full安裝,路徑可以自己選擇,預設路徑為 C:\Program Files\Teledyne DALSA\
DALSA線陣CCD開發紀要(C++)
應用背景:晶體表面疵病工業檢測,導軌運動的光柵尺反饋系統產生的脈衝用於外觸發Dalsa相機進行影象採集。 解決問題:Dalsa線陣CCD直接採集的影象是當前一行的影象,配套的採集卡中用於儲存影象的緩衝區有限,當平臺連續長距離運動時,如果不及時讀取緩衝區的影象,新採集的影象將覆蓋之前採集的影象。
Dalsa線掃相機SDK開發-小試牛刀(1)
拿到了dalsa相機,可以用Sapera軟體配置相機,進行影象採集。但是自己開發的話就得擼起袖子寫程式碼了,查了兩篇不錯的博文,作為指導。 1、首先搞清楚要實現什麼功能。 現在的應用是用編碼器的脈衝觸發相機來進行逐行掃描。 以C:\Program Files\T
線陣相機鏡頭和光源選型
二次元 部分 機器 而且 明顯 固定 現場 也有 穿透 關於線線相機、鏡頭、光源的選型,歡迎來電探討線掃描系統的搭建與選型 隨著機器視覺的大規模普及與工業流水線速度、精度的提高,線掃描系統越來越被視覺工程師和最終用戶所認可。 首先,我對線掃描系統做一個大
線陣相機知識彙總
個人分類: 計算機視覺 線陣相機顧名思義就是取像是成線性的。 它的感測器是成線型的。 舉個例子: 比如面陣相機的解析度是640*480就是說這個相機橫向有640個像元,縱向有480個像元。 而線陣相機解析度只體現在橫向,比如2048畫素的線陣相機就是說橫向有2048個像元,縱向大多
怎樣選擇線陣相機,線陣鏡頭,線陣光源
隨著機器視覺的大規模普及與工業流水線速度、精度的提高,線掃描系統越來越被視覺工程師和終端使用者所認可。 首先,我對線掃描系統做一個大致的介紹。線掃描系統用於被測物體和相機之間有相對運動的場合,通過線掃描相機高速採集,每次採集完一條線後正好運動到下一個單位長度,繼續下
中科藍海 ZKCP400B-1390 高精度寬幅線陣相機的優點
文物燒錄經常出現問題,就是文物要妥善保管,不能破壞文物的完整性整體性,這樣很容易導致燒錄結果不清晰、掃描內容不完整、整體效果差。中科藍海專門研製的ZKCP400B-1390寬幅線陣相機應用而生。 ZKCP400B-1390寬幅線陣相機採用CMOS技術,採用一列內建的LED發光二極體照明,直
超寬幅線陣相機 中科藍海 大型玻璃、皮革、PCB等測量
超寬幅線陣相機 ZKCP400B-1390系列 應用領域 嵌入ZKCP400B-1390系列寬幅面線陣相機的可實現大幅面零畸變高解析度成像,廣泛應用於印刷製品、書畫文物、大型玻璃、糧食色選、LCD面板檢測、PCB檢測、鋼鐵檢測、菸草行業、紡織行業、板材傢俱、帳篷、帆船、潛水衣、服裝
傳統的人手描點?臨摹?對於大型樣板無從下手?救星來了,超寬幅線陣相機
中科藍海超寬幅線陣相機——採用CMOS技術的線性掃描相機 布料、皮革、鞋樣等等以前用人手去描點、去畫,現在直接放上去即可。以前阿拉伯人袖子裁剪和搭配顏色,中國設計師不理解,把他們的衣服買回來,把線頭拆瞭然後照著抄尺寸,像美術師在臨摹一樣,現在我們裁剪後放上去,過一下,下切割機切割,直接出
面陣和線掃工業相機選型
一. 面陣相機和鏡頭選型 已知:被檢測物體大小為A*B,要求能夠分辨小於C,工作距為D 解答: 1. 計算短邊對應的畫素數 E = B/C,相機長邊和短邊的畫素數都要大於E; 2. 像元尺寸 = 物體短邊尺寸B / 所選相機的短邊畫素數; 3. 放大倍率 = 所選相機
我瞭解的一些線陣相機知識
線陣相機顧名思義就是取像是成線性的。 它的感測器是成線型的。舉個例子: 比如面陣相機的解析度是640*480就是說這個相機橫向有640個像元,縱向有480個像元。 而線陣相機解析度只體現在橫向,比如2048畫素的線陣相機就是說橫向有2048個像元,縱向大多數為1。(RGB相機
C#_Demo_攝像頭實時_4線程人臉識別註冊開發全過程
字節 sender 部分 刪除 微信 結果集 col 後來 lane v效率有點低,大家看看哪裏開可以節省時間?源代碼:https://github.com/catzhou2002/ArcFaceDemo說實話,為了提高識別效率,我也是竭盡所能,幹了不少自認為的優化,如有興
C#開發PACS醫學影像處理系統(十五):Dicom影像交叉定位線演算法
1.定位線概念:某個方位的影像在另一個方向的影像上的投影相交線,例如橫斷面(從頭到腳的方向)在矢狀面(從左手到右手)上的影像投影面交線。 舉個例子:右邊的是MR(核磁共振)的某一幀切片,這是從頭開始掃描,掃描到眼睛這個位置, 而左邊影象是從左手到右手的掃描切片,那麼右邊影象的位置就恰好在左邊影象的眼睛的位置,
C#開發Unity遊戲教程之Scene視圖與腳本的使用
ont 展開 支持 查看 提示 microsoft etime font 一個 C#開發Unity遊戲教程之Scene視圖與腳本的使用 Unity中Scene視圖的快捷操作 Scene視圖是開發人員開發遊戲時,操作最頻繁的視圖。由於一旦一個遊戲對象被加入到遊戲的場
C#開發WEBService服務 C++開發客戶端調用WEBService服務
blank 內容 目錄 www nal .net 操作 service服務 3.1 編寫程序 http://blog.csdn.net/u011835515/article/details/47615425 遇到問題及解決方法: HTTP 錯誤 500.19- I
C++開發人臉性別識別教程(3)——OpenCv配置和ImageWatch插件介紹
下劃線 toc bsp 對話 顯示 調試 詳細 結構 post OpenCv是C++圖像處理的重要工具。這個人臉性別識別的項目就是借助OpenCv進行開發的。盡管網上已經有了非常多關於OpenCv的配置教程,但出於教程完整性考慮。這裏還是用專門的一篇博客來介紹Ope
做C++ 開發,是基於Linux好還是Windows 好?
我想故事的發展是這樣.... 先是糾結語言 (lisp沒聽過 聽說python效率不高還縮進 原來ruby是小鬼子弄的 那個什麽叫lua的只能用來寫遊戲腳本 放眼望去java只能做民工啊 那個c語言土掉渣, 過時幾百年了
C++開發人臉性別識別總結
class 算法 col 設計 ctrl webkit div cli 改進 歷時一個月,最終在昨天把《C++開發人臉性別識別總結》系列博客完畢了,第一篇博客發表在2015年12月29日,截止昨天2016年2月29日最後一篇完畢,去除中間一個月的寒假,正好一個月,首