介紹
c# 相機(jī)庫(kù),含???、大恒品牌2D相機(jī)的常用功能。
底層采用回調(diào)+信號(hào)量模式封裝 ,最大程度減小線程資源,提高采圖效率。
開(kāi)源地址:https://gitee.com/laomaogu/mgcamctrl
現(xiàn)只兼容了大恒和海康,都是常用的
其他相機(jī),看我老板啥時(shí)候換品牌吧,或者換老板?
當(dāng)然如果小伙伴感興趣,可以在這個(gè)框架下直接添加
一、使用案例
Sample路徑下放了案例
二、使用介紹
注意:
一定要設(shè)置為 x64 編譯平臺(tái)
1、工廠模式創(chuàng)建實(shí)例
ICamera myCamera;
myCamera= CamFactory.CreatCamera(CameraBrand.HIK);//CameraBrand.DaHeng
2、枚舉設(shè)備,初始化
選取對(duì)應(yīng)SN號(hào)的相機(jī),初始化相機(jī)
調(diào)試的時(shí)候,經(jīng)常直接中斷程序
程序Kill了,但相機(jī)還未注銷。。。。。。
導(dǎo)致每次中斷重啟都連不上相機(jī),要重新斷電才行
所以在初始化的時(shí)候都加了心跳(僅支持網(wǎng)口),
斷連超1000ms后,相機(jī)就自動(dòng)注銷,
下次能直接連接相機(jī)啦!
中斷算個(gè)diao,哈哈哈哈
//獲取相機(jī)枚舉
var devicelist = myCamera.GetListEnum();
//or
//var devicelist = CamFactory.GetDeviceEnum(CameraBrand.HIK);
//選對(duì)應(yīng)SN,初始化相機(jī)
myCamera.InitDevice(devicelist.First());
3、啟動(dòng)相機(jī)
啟動(dòng)相機(jī)有以下幾種方式:
- 常規(guī)硬觸發(fā)
- 常規(guī)軟觸發(fā)
- 硬觸發(fā) + 回調(diào)
- 軟觸發(fā) + 回調(diào)
//硬觸發(fā)模式 啟動(dòng)相機(jī)
myCamera.StartWith_HardTriggerModel(HardTriggerModel.Line0);
//軟觸發(fā)模式 啟動(dòng)相機(jī)
//myCamera.StartWith_SoftTriggerModel();
//硬觸發(fā) + 回調(diào)模式 啟動(dòng)相機(jī)
// myCamera.StartWith_HardTriggerModel_SetCallback(HardTriggerModel.Line0, CameraCallBack);
//軟觸發(fā) + 回調(diào)模式 啟動(dòng)相機(jī)
//myCamera.StartWith_SoftTriggerModel_SetCallback(CameraCallBack);
回調(diào)函數(shù):文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-858602.html
/// <summary>
/// 回調(diào)函數(shù)
/// </summary>
/// <param name="bmp"></param>
private void CameraCallBack(Bitmap bmp)
{
//執(zhí)行取圖后的操作
bmp.Save("./test.bmp");
}
4、取圖
為了能兼容其他視覺(jué)平臺(tái),圖像格式為Bitmap
這樣無(wú)論是OpenCV Halcon VisionPro 都可任意轉(zhuǎn)換想要的格式文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-858602.html
//等待硬觸發(fā) 獲取圖片, 設(shè)定超時(shí):5000ms
myCamera.GetImage(out Bitmap CaptureImage,5000);
//or 使用默認(rèn)超時(shí)時(shí)間
//myCamera.GetImage(out Bitmap CaptureImage);
//軟觸發(fā)獲取圖像
//myCamera.GetImageWithSoftTrigger(out Bitmap CaptureImage);
/// <summary>
/// 回調(diào)函數(shù)
/// </summary>
/// <param name="bmp"></param>
private void CameraCallBack(Bitmap bmp)
{
//執(zhí)行取圖后的操作
bmp.Save("./test.bmp");
}
5、注銷相機(jī)
//注銷當(dāng)前實(shí)例
myCamera.CloseDevice();
or
//CamFactory.DestroyCamera(myCamera);
or
//CamFactory.DestroyAll();
三、接口
1、相機(jī)操作
接口 | 描述 |
---|---|
List < string > GetListEnum() | 獲取相機(jī)SN枚舉 |
bool InitDevice(string CamSN) | 初始化相機(jī) |
void CloseDevice() | 注銷相機(jī) |
2、啟動(dòng)方式
接口 | 描述 |
---|---|
bool StartWith_Continue_SetCallback(Action callbackfunc) | 回調(diào) + 循環(huán)采圖 啟動(dòng)相機(jī) |
bool StartWith_SoftTriggerModel() | 軟觸發(fā)模式 啟動(dòng)相機(jī) |
bool StartWith_HardTriggerModel(TriggerSource hardtriggeritem) | 硬觸發(fā)模式 啟動(dòng)相機(jī) |
bool StartWith_HardTriggerModel_SetCallback(TriggerSource hardtriggeritem, Action callbackfunc) | 硬觸發(fā) + 回調(diào) 啟動(dòng)相機(jī) |
bool StartWith_SoftTriggerModel_SetCallback(Action callbackfunc) | 軟觸發(fā) + 回調(diào) 啟動(dòng)相機(jī) |
3、取圖
接口 | 描述 |
---|---|
bool GetImage(out Bitmap bitmap, int outtime = 3000) | 等待硬觸發(fā)獲取圖像 |
bool GetImageWithSoftTrigger(out Bitmap bitmap, int outtime = 3000) | 軟觸發(fā)獲取圖像 |
bool SoftTrigger() | 軟觸發(fā) |
回調(diào)取圖(詳情見(jiàn)案例) |
4、設(shè)置/獲取參數(shù)
接口 | 描述 |
---|---|
void SetCamConfig(CamConfig config) | 設(shè)置相機(jī)參數(shù) |
void GetCamConfig(out CamConfig config) | 獲取相機(jī)參數(shù) |
bool SetTriggerMode(TriggerMode mode, TriggerSource triggerEnum = TriggerSource.Line0) | 設(shè)置觸發(fā)模式及觸發(fā)源 |
bool GetTriggerMode(out TriggerMode mode, out TriggerSource hardTriggerModel) | 獲取觸發(fā)模式及觸發(fā)源 |
bool SetExpouseTime(ushort value) | 設(shè)置曝光時(shí)長(zhǎng) |
bool GetExpouseTime(out ushort value) | 獲取曝光時(shí)長(zhǎng) |
bool SetTriggerPolarity(TriggerPolarity polarity) | 設(shè)置硬觸發(fā)極性 |
bool GetTriggerPolarity(out TriggerPolarity polarity) | 獲取硬觸發(fā)極性 |
bool SetTriggerFliter(ushort flitertime) | 設(shè)置觸發(fā)濾波時(shí)間 (us) |
bool GetTriggerFliter(out ushort flitertime) | 獲取觸發(fā)濾波時(shí)間 (us) |
bool SetTriggerDelay(ushort delay) | 設(shè)置觸發(fā)延時(shí) |
bool GetTriggerDelay(out ushort delay) | 獲取觸發(fā)延時(shí) |
bool SetGain(short gain) | 設(shè)置增益 |
bool GetGain(out short gain) | 獲取增益值 |
bool SetLineMode(IOLines line, LineMode mode) | 設(shè)置信號(hào)線模式 |
bool SetLineStatus(IOLines line, LineStatus linestatus) | 設(shè)置信號(hào)線電平狀態(tài) |
bool GetLineStatus(IOLines line, out LineStatus lineStatus) | 獲取信號(hào)線電平狀態(tài) |
bool AutoBalanceWhite() | 自動(dòng)白平衡 |
到了這里,關(guān)于C# 開(kāi)源SDK 工業(yè)相機(jī)庫(kù) 調(diào)用??迪鄼C(jī) 大恒相機(jī)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!