国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux下??低暪I(yè)相機的SDK二次開發(fā)

這篇具有很好參考價值的文章主要介紹了Linux下??低暪I(yè)相機的SDK二次開發(fā)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.客戶端軟件MVS的安裝

1.1安裝包的下載和解壓

去 官網(wǎng) 下載兩個軟件安裝,分別是客戶端和開發(fā)環(huán)境。(這里我們下載V2.1.1(Linux)和Runtime組件包(Linux)):Linux下??低暪I(yè)相機的SDK二次開發(fā)

工業(yè)相機文檔/安裝包中的不同安裝版本安裝包里有各個系統(tǒng)及arm開發(fā)板使用的安裝包,選擇相應(yīng)的安裝包進行安裝(這里我們選擇最后一個)

Linux下??低暪I(yè)相機的SDK二次開發(fā)

?右鍵提取,進入提取后的文件夾,右鍵打開終端。

1.2安裝步驟

Step1:切換root權(quán)限

rm@rm:~/下載/MVS-2.1.1_x86_64_20211224$ sudo su

Step2:運行安裝腳本

rm@rm:~/下載/MVS-2.1.1_x86_64_20211224$ ./setup.sh

安裝完成后,/opt路徑下會生成MVS文件夾,包含以下內(nèi)容:

Linux下??低暪I(yè)相機的SDK二次開發(fā)

1.3 MVS客戶端的運行

?進入bin目錄,運行MVS,即可打開客戶端? Linux下??低暪I(yè)相機的SDK二次開發(fā)

連接??倒I(yè)相機之后,通過其官方提供的MVS客戶端,我們可以設(shè)置相關(guān)相機參數(shù),來調(diào)整圖像,達到我們想要的效果,但是如此眾多的相機參數(shù),我們該如何集成進入我們程序呢,接下來就是我們的SDK二次開發(fā)。

Linux下海康威視工業(yè)相機的SDK二次開發(fā)

2.參數(shù)的設(shè)置

2.1 SDK 用戶指南的閱讀

  • 在 opt/MVS/doc 目錄下,我們可以找到 工業(yè)相機Linux SDK用戶指南V3.2.0(C).html ,經(jīng)查詢SDK文檔,可以發(fā)現(xiàn),他們提供了一套通用接口,來對相機進行參數(shù)獲取與設(shè)置。

  • 通用接口把相機參數(shù),分成六大類,除command參數(shù)外,每一類提供Set/Get接口來設(shè)置與獲取相關(guān)節(jié)點

Linux下??低暪I(yè)相機的SDK二次開發(fā)

如整形數(shù)據(jù)的獲取與設(shè)置Linux下海康威視工業(yè)相機的SDK二次開發(fā)

?Linux下??低暪I(yè)相機的SDK二次開發(fā)

  • 相機所有開放的屬性值都可參考 相機參數(shù)節(jié)點表 進行查詢,此節(jié)點表對每個節(jié)點的名稱、數(shù)據(jù)類型、數(shù)值范圍定義、訪問模式和節(jié)點描述進行了詳細(xì)說明。對著表可以對參數(shù)進行詳細(xì)的設(shè)置。

    Linux下??低暪I(yè)相機的SDK二次開發(fā)

    2.2 MVS 客戶端的聯(lián)合使用

通過查表,我們可以知道key值該填什么,key值的屬性是什么,但是,這樣子太慢了。為確定我想調(diào)的參數(shù)在xml表的位置,還需要在MVS客戶端中進行定位。那么有沒有更為簡單快速的方法? 通過觀察MVS客戶端,有一個更簡單的方法能夠知道相機參數(shù)的屬性,類型等,可以快速方便的對參數(shù)進行操作

  • 在MVS中找到自己想要的參數(shù),鼠標(biāo)選中它,在MVS右下角,參數(shù)描述中,能看看該參數(shù)的節(jié)點名、類型、取值范圍、步進等信息

Linux下??低暪I(yè)相機的SDK二次開發(fā)其節(jié)點名為上圖可知,圖像寬度“Height”,類型是“int”,取值范圍是32~2480,步進是2;根據(jù)類型,我們就可以選用 MV_CC_GetIntValue/MV_CC_SetIntValue來對該屬性進行操作;

2.3 六類參數(shù)的獲取和設(shè)置(例)

  • 獲取/設(shè)置 Bool 類型節(jié)點值

 ? ? ? ?// 獲取bool型變量
 ? ? ? ?// get IBoolean variable
 ? ? ? ?bool bGetBoolValue = false;
 ? ? ? ?nRet = MV_CC_GetBoolValue(handle, "ReverseX", &bGetBoolValue);
 ? ? ? ?if (MV_OK == nRet)
 ? ? ?  {
 ? ? ? ? ? ?if (0 != bGetBoolValue)
 ? ? ? ? ?  {
 ? ? ? ? ? ? ? ?printf("ReverseX current is true\n\n");
 ? ? ? ? ?  }
 ? ? ? ? ? ?else
 ? ? ? ? ?  {
 ? ? ? ? ? ? ? ?printf("ReverseX current is false\n\n");
 ? ? ? ? ?  }
 ? ? ?  }
 ? ? ? ?// 設(shè)置bool型變量
 ? ? ? ?// set IBoolean variable
 ? ? ? ?int nSetBoolValue;
 ? ? ? ?bool bSetBoolValue;
 ? ? ? ?printf("please input the ReverseX to set(bool): ");
 ? ? ? ?scanf("%d", &nSetBoolValue);
 ? ? ? ?if (0 != nSetBoolValue)
 ? ? ?  {
 ? ? ? ? ? ?bSetBoolValue = true;
 ? ? ?  }
 ? ? ? ?else
 ? ? ?  {
 ? ? ? ? ? ?bSetBoolValue = false;
 ? ? ?  }
 ? ? ? ?nRet = MV_CC_SetBoolValue(handle, "ReverseX", bSetBoolValue);
 ? ? ? ?if (MV_OK == nRet)
 ? ? ?  {
 ? ? ? ? ? ?printf("Set ReverseX OK!\n\n");
 ? ? ?  }
 ? ? ? ?else
 ? ? ?  {
 ? ? ? ? ? ?printf("Set ReverseX Failed! nRet = [%x]\n\n", nRet);
 ? ? ?  }
  • 獲取/設(shè)置 Enum 類型節(jié)點值

 ? ? ? ?// 獲取enum型變量
 ? ? ? ?// get IEnumeration variable
 ? ? ? ?MVCC_ENUMVALUE stTriggerMode = {0};
 ? ? ? ?nRet = MV_CC_GetEnumValue(handle, "TriggerMode", &stTriggerMode);
 ? ? ? ?if (MV_OK == nRet)
 ? ? ?  {
 ? ? ? ? ? ?printf("TriggerMode current value:%d\n", stTriggerMode.nCurValue);
 ? ? ? ? ? ?printf("supported TriggerMode number:%d\n", stTriggerMode.nSupportedNum);
 ? ? ? ? ? ?for (unsigned int i = 0; i < stTriggerMode.nSupportedNum; ++i)
 ? ? ? ? ?  {
 ? ? ? ? ? ? ? ?printf("supported TriggerMode [%d]:%d\n", i, stTriggerMode.nSupportValue[i]);
 ? ? ? ? ?  }
 ? ? ? ? ? ?printf("\n");
 ? ? ?  }
 ? ? ? ?else
 ? ? ?  {
 ? ? ? ? ? ?printf("get TriggerMode failed! nRet [%x]\n\n", nRet);
 ? ? ?  }
 ? ? ? ?// 設(shè)置enum型變量
 ? ? ? ?// set IEnumeration variable
 ? ? ? ?unsigned int nTriggerMode = 0;
 ? ? ? ?printf("please input the TriggerMode to set:");
 ? ? ? ?scanf("%d", &nTriggerMode);
 ? ? ? ?nRet = MV_CC_SetEnumValue(handle, "TriggerMode", nTriggerMode);
 ? ? ? ?if (MV_OK == nRet)
 ? ? ?  {
 ? ? ? ? ? ?printf("set TriggerMode OK!\n\n");
 ? ? ?  }
 ? ? ? ?else
 ? ? ?  {
 ? ? ? ? ? ?printf("set TriggerMode failed! nRet [%x]\n\n", nRet);
 ? ? ?  }
  • 獲取/設(shè)置 Float 類型節(jié)點值

 ? ? ? ?// 獲取float型變量
 ? ? ? ?// get IFloat variable
 ? ? ? ?MVCC_FLOATVALUE stExposureTime = {0};
 ? ? ? ?nRet = MV_CC_GetFloatValue(handle, "ExposureTime", &stExposureTime);
 ? ? ? ?if (MV_OK == nRet)
 ? ? ?  {
 ? ? ? ? ? ?printf("exposure time current value:%f\n", stExposureTime.fCurValue);
 ? ? ? ? ? ?printf("exposure time max value:%f\n", stExposureTime.fMax);
 ? ? ? ? ? ?printf("exposure time min value:%f\n\n", stExposureTime.fMin);
 ? ? ?  }
 ? ? ? ?else
 ? ? ?  {
 ? ? ? ? ? ?printf("get exposure time failed! nRet [%x]\n\n", nRet);
 ? ? ?  }
 ? ? ? ?// 設(shè)置float型變量
 ? ? ? ?// set IFloat variable
 ? ? ? ?float fExposureTime = 0.0f;
 ? ? ? ?printf("please input the exposure time to set: ");
 ? ? ? ?scanf("%f", &fExposureTime);
 ? ? ? ?nRet = MV_CC_SetFloatValue(handle, "ExposureTime", fExposureTime);
 ? ? ? ?if (MV_OK == nRet)
 ? ? ?  {
 ? ? ? ? ? ?printf("set exposure time OK!\n\n");
 ? ? ?  }
 ? ? ? ?else
 ? ? ?  {
 ? ? ? ? ? ?printf("set exposure time failed! nRet [%x]\n\n", nRet);
 ? ? ?  }
  • 獲取/設(shè)置 Int 類型節(jié)點值

 ? ? ? ?// 獲取int型變量
 ? ? ? ?// get IInteger variable
 ? ? ? ?MVCC_INTVALUE stHeight = {0};
 ? ? ? ?nRet = MV_CC_GetIntValue(handle, "Height", &stHeight);
 ? ? ? ?if (MV_OK == nRet)
 ? ? ?  {
 ? ? ? ? ? ?printf("height current value:%d\n", stHeight.nCurValue);
 ? ? ? ? ? ?printf("height max value:%d\n", stHeight.nMax);
 ? ? ? ? ? ?printf("height min value:%d\n", stHeight.nMin);
 ? ? ? ? ? ?printf("height increment value:%d\n\n", stHeight.nInc);
 ? ? ?  }
 ? ? ? ?else
 ? ? ?  {
 ? ? ? ? ? ?printf("get height failed! nRet [%x]\n\n", nRet);
 ? ? ?  }
 ? ? ? ?// 設(shè)置int型變量
 ? ? ? ?// set IInteger variable
 ? ? ? ?unsigned int nHeightValue = 0;
 ? ? ? ?printf("please input the height to set:");
 ? ? ? ?scanf("%d", &nHeightValue);
 ? ? ? ?// 寬高設(shè)置時需考慮步進(2),即設(shè)置寬高需2的倍數(shù)
 ? ? ? ?// Step (16) should be considered when setting width and height, that is the width and height should be a multiple of 2
 ? ? ? ?nRet = MV_CC_SetIntValue(handle, "Height", nHeightValue); ? ?
 ? ? ? ?if (MV_OK == nRet)
 ? ? ?  {
 ? ? ? ? ? ?printf("set height OK!\n\n");
 ? ? ?  }
 ? ? ? ?else
 ? ? ?  {
 ? ? ? ? ? ?printf("set height failed! nRet [%x]\n\n", nRet);
 ? ? ?  }
  • 獲取/設(shè)置 String 類型節(jié)點值

 ? ? ? ?// 獲取string型變量
 ? ? ? ?// get IString variable
 ? ? ? ?MVCC_STRINGVALUE stStringValue = {0};
 ? ? ? ?nRet = MV_CC_GetStringValue(handle, "DeviceUserID", &stStringValue);
 ? ? ? ?if (MV_OK == nRet)
 ? ? ?  {
 ? ? ? ? ? ?printf("Get DeviceUserID [%s]\n\n", stStringValue.chCurValue);
 ? ? ?  }
 ? ? ? ?else
 ? ? ?  {
 ? ? ? ? ? ?printf("Get DeviceUserID Failed! nRet = [%x]\n\n", nRet);
 ? ? ?  }
 ? ? ? ?// 設(shè)置string型變量
 ? ? ? ?// set IString variable
 ? ? ? ?unsigned char strValue[256];
 ? ? ? ?printf("please input the DeviceUserID to set(string):");
 ? ? ? ?scanf("%s", strValue);
 ? ? ? ?nRet = MV_CC_SetStringValue(handle, "DeviceUserID", (char*)strValue);
 ? ? ? ?if (MV_OK == nRet)
 ? ? ?  {
 ? ? ? ? ? ?printf("Set DeviceUserID OK!\n\n");
 ? ? ?  }
 ? ? ? ?else
 ? ? ?  {
 ? ? ? ? ? ?printf("Set DeviceUserID Failed! nRet = [%x]\n\n", nRet);
 ? ? ?  }
  • 設(shè)置 Command 類型節(jié)點值

 ? ? ? ?nRet = MV_CC_SetCommandValue(pUser, "TriggerSoftware");
 ? ? ? ?if(MV_OK != nRet)
 ? ? ?  {
 ? ? ? ? ? ?printf("failed in TriggerSoftware[%x]\n", nRet);
 ? ? ?  }
 ? ? ? ?nRet = MV_CC_GetOneFrameTimeout(pUser, pData, nDataSize, &stImageInfo, 1000);
 ? ? ? ?if (nRet == MV_OK)
 ? ? ?  {
 ? ? ? ? ? ?printf("GetOneFrame, Width[%d], Height[%d], nFrameNum[%d]\n", 
 ? ? ? ? ? ? ? ?stImageInfo.nWidth, stImageInfo.nHeight, stImageInfo.nFrameNum);
 ? ? ?  }
 ? ? ? ?else
 ? ? ?  {
 ? ? ? ? ? ?printf("Get One Frame failed![%x]\n", nRet);
 ? ? ?  }

3.開發(fā)過程中遇到的問題

3.1 SDK 文檔中參數(shù)的節(jié)點名、類型、取值范圍、步進等信息與MVS 客戶端中不同

在參數(shù)設(shè)置過程中會發(fā)現(xiàn)SDK 文檔中參數(shù)的節(jié)點名、類型、取值范圍、步進等信息與MVS 客戶端中不同,比如幀率的類型,寬度和高度的步進,或者缺少水平合并和垂直合并等,在這里我們以MVS客戶端 中的數(shù)據(jù)為準(zhǔn)。這里就更體現(xiàn)了 2.2MVS客戶端聯(lián)合使用的必要性。

3.2 錯誤碼的解讀

  • 所有工業(yè)相機SDK接口都會返回相應(yīng)的值。如果函數(shù)正常完成而沒有檢測到任何錯誤,則返回值為MV_OK,否則返回錯誤碼 。

  • SDK 文檔中已經(jīng)有對于錯誤碼的必要介紹,更詳細(xì)請訪問鏈接??倒I(yè)相機SDK錯誤碼常見場景解析文章來源地址http://www.zghlxwxcb.cn/news/detail-491077.html

到了這里,關(guān)于Linux下??低暪I(yè)相機的SDK二次開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • ??低曄鄼C-LINUX SDK 開發(fā)

    ??低曄鄼C-LINUX SDK 開發(fā)

    相機: MV-CS020-10GC 系統(tǒng):UBUNTU 22.04 語言:C++ 工具:cmake ??倒倬W(wǎng)下載SDK 運行下面的命令進行安裝 安裝完成后從在/opt/MVS 路徑下就有了相關(guān)的庫,實際上我們開發(fā)的時候只需要lib和include。有興趣的同學(xué)也可以嘗試以下Samples的例子。make一下就能生成可執(zhí)行文件。如果make報錯

    2024年02月11日
    瀏覽(18)
  • ??低暠O(jiān)控相機的SDK與opencv調(diào)用(非工業(yè)相機)

    海康威視監(jiān)控相機的SDK與opencv調(diào)用(非工業(yè)相機)

    本篇主要對??低暤谋O(jiān)控相機的SDK回調(diào)進行研究,并于opencv結(jié)合,保存圖像,以供后續(xù)其他處理,開發(fā)語言為C++ 2.1 ??礢DK介紹 ??礢DK下載地址 根據(jù)自身編譯環(huán)境,下載對應(yīng)的SDK,需要注意的是,不要和工業(yè)相機SDK相混淆,工業(yè)相機好像是MVS是什么玩意兒,現(xiàn)在暫時沒研究

    2024年02月04日
    瀏覽(39)
  • 基于??低暤腟DK實現(xiàn)二次開發(fā)

    基于??低暤腟DK實現(xiàn)二次開發(fā)

    因為網(wǎng)上關(guān)于??低昐DK這塊的開發(fā)資源比較少,自己也是一步一步摸索過來,知道那種痛苦, 所以把自己的一些過來人的經(jīng)驗寫出來供大家學(xué)習(xí)參考 進入??低暪倬W(wǎng) 下載你所需要的SDK開發(fā)包(這里我就用windows來作為案列) 下載完SDK解壓 里面有開發(fā)文檔和SDK的動態(tài)庫文

    2024年04月10日
    瀏覽(17)
  • WIN大恒工業(yè)相機SDK開發(fā)

    WIN大恒工業(yè)相機SDK開發(fā)

    1、Galaxy的安裝 Galaxy_windows2023年8月版本 下載完成后對軟件進行安裝,切記自己的安裝目錄 安裝完成后,檢查自己的相機是否是網(wǎng)口相機,如果是網(wǎng)口相機則需要進行IP配置,當(dāng)相機與計算及網(wǎng)口處于同一網(wǎng)段下才可以打開相機并控制相機。 IPConfig工具可以查找到所有網(wǎng)段的設(shè)

    2024年02月14日
    瀏覽(25)
  • Dalsa線掃相機SDK二次開發(fā)

    要用回調(diào)函數(shù)取圖:

    2024年02月12日
    瀏覽(25)
  • 巴斯勒相機基于SDK 二次開發(fā)C++程序

    巴斯勒相機在VS中如何進行連接調(diào)用呢(軟觸發(fā)調(diào)用) 1.查找巴斯勒相機網(wǎng)口; 2.調(diào)用巴斯勒相機提供的接口,連接巴斯勒相機; 3.初始化相機; (安裝巴斯勒相機軟件) 其他引用第三方庫以及對應(yīng)頭文件 鏈接:https://pan.quark.cn/s/71bb1b3e0dad 提取碼:JfM9

    2024年04月14日
    瀏覽(20)
  • 【記錄】??迪鄼C(SDK)二次開發(fā)時的錯誤碼

    在進行海康sdk二次開發(fā)的時候,經(jīng)常碰到各種錯誤,遂結(jié)合官方文檔和廣大網(wǎng)友的一些經(jīng)驗,把這些錯誤碼記錄一下,方便查找。筆者使用的SDK版本是HCNetSDKV6.1.9.4。 錯誤類型 錯誤碼 錯誤信息 NET_DVR_NOERROR 0 沒有錯誤。 NET_DVR_PASSWORD_ERROR 1 用戶名密碼錯誤。注冊時輸入的用戶名

    2024年04月08日
    瀏覽(24)
  • 【重明】機器視覺QT/C++實現(xiàn)工業(yè)相機二次開發(fā)框架

    【重明】機器視覺QT/C++實現(xiàn)工業(yè)相機二次開發(fā)框架

    工業(yè)相機二次開發(fā)是機器視覺行業(yè)必不可少的技能之一。 而如何實現(xiàn)一個框架,能夠兼容所有工業(yè)相機二次開發(fā),從而支持多種類型的工業(yè)相機,就是機器視覺行業(yè)的進階技能了。 重明工業(yè)相機二次開發(fā)項目就是在實現(xiàn)相機二開框架的基礎(chǔ)上,完成了海康工業(yè)相機的二次開

    2024年02月02日
    瀏覽(55)
  • (一)Qt+OpenCV調(diào)用??倒I(yè)相機SDK示例開發(fā)

    (一)Qt+OpenCV調(diào)用??倒I(yè)相機SDK示例開發(fā)

    提示:這里是該系列文章的所有文章的目錄 第一章: (一)Qt+OpenCV調(diào)用??倒I(yè)相機SDK示例開發(fā) 第二章: (二)Qt多線程實現(xiàn)??倒I(yè)相機圖像實時采集 近期在Qt環(huán)境下進行??倒I(yè)相機的使用開發(fā),發(fā)現(xiàn)??堤峁┑氖纠龥]有Qt的demo,而其中有基于MFC框架的示例,所以在這

    2024年02月03日
    瀏覽(150)
  • C# 開源SDK 工業(yè)相機庫 調(diào)用??迪鄼C 大恒相機

    C# 開源SDK 工業(yè)相機庫 調(diào)用海康相機 大恒相機

    c# 相機庫,含???、大恒品牌2D相機的常用功能。 底層采用回調(diào)+信號量模式封裝 ,最大程度減小線程資源,提高采圖效率。 開源地址 :https://gitee.com/laomaogu/mgcamctrl 現(xiàn)只兼容了大恒和???,都是常用的 其他相機,看我老板啥時候換品牌吧,或者換老板? 當(dāng)然如果小伙伴感興

    2024年04月26日
    瀏覽(79)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包