1. 程式人生 > >dalsa 8k線陣網口相機c#開發

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

DALSACCD相機開發 之 opencv讀取圖片

SDK的下載 SDK的安裝 解壓執行.exe檔案,按照提示確定,下一步即可。 幫助文件和demo 如果要獲得完整的幫助文件和demo,在SDK安裝時選擇full安裝,路徑可以自己選擇,預設路徑為 C:\Program Files\Teledyne DALSA\

DALSACCD開發紀要(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日最後一篇完畢,去除中間一個月的寒假,正好一個月,首